У меня есть две таблицы, аукционы и пользователи.sql join question
Я хочу выбрать таблицу имени пользователя на аукционах, где category = x, а затем выбрать поля a, b и c из таблицы users, где поле пользователя в пользователях соответствует полям пользователя с аукционов.
Я пытаюсь это:
SELECT AUCTIONS.USERNAME, USERS.firstname, USERS.lastname, USERS.flaggedauctions
FROM AUCTIONS
INNER JOIN USERS
ON AUCTIONS.USERNAME=USERS.USERNAME
Который, кажется, работает. Однако USERNAME не является первичным ключом в любой таблице, и в таблице аукционов может быть много записей с тем же именем пользователя, что и в таблице пользователей, где будет только одна запись на имя пользователя.
Вышеупомянутый запрос работает, но проблема возникает, если я хочу ограничить набор результатов, чтобы сказать 10, для разбивки на страницы. Это может привести к возврату 10 записей, некоторые из которых являются дубликатами. Есть ли способ запустить запрос, ограничивающий 1 запись на одну фамилию внутри другого запроса?
редактировать: в ответ на пост Quassnoi в
имена пользователей всегда уникальны
Если у меня есть
Auctions:
username category blah
-------------------------------------
user1 category1 tshirt
user2 category2 jeans
user3 category3 shoes
user2 category3 belt
user3 category3 pants
Users:
username firstname lastname
-------------------------------------
user1 john smith
user2 fred black
user3 alice brady
Then given category 3 as the category, I would want to show:
username firstname lastname
-------------------------------------
user2 fred black
user3 alice brady
With username coming from the auctions table.
Instead, at the moment this will display:
username firstname lastname
-------------------------------------
user2 fred black
user3 alice brady
user3 alice brady
edit2:
Я использую
SELECT username, firstname, lastname
FROM USERS
WHERE username
IN (
SELECT USERNAME
FROM AUCTIONS
WHERE category = 'fake'
)
LIMIT 0 , 30
Что возвращает 0 результатов. Есть много записей в AUCTIONS с категорией, установленной для подделки.
могли бы вы предоставить структуру аукциона и пользовательских таблиц? –
Итак, держись, уникально ли имя пользователя? Вы говорите, что это не ПК в любой таблице, которая заставляет его звучать так, как будто могут быть дубликаты, поэтому, пока SELECT DISTINCT будет работать, наверняка это будет недействительным, если имя пользователя не уникально, потому что вы случайно опустите действительные записи ? – Kezzer