2013-07-29 2 views
1

Я делаю запрос, который использует 3 таблицы. таблица кавычек имеет ключ, называемый quote_id, который хранится в таблице quote_items. В таблице кавычек будет только один экземпляр quote_id, но в таблице quote_items это может произойти несколько раз. Я хочу присоединиться к ним вместе, но отфильтровать любой экземпляр, где quote_id встречается более одного раза.MySQL Выберите различные значения из двух таблиц, имеющих общий ключ

SELECT * FROM quotes 
INNER JOIN quote_items ON 
quotes.quote_id IN (SELECT DISTINCT quote_id FROM quote_items) 
INNER JOIN accounts ON 
quotes.account_id = accounts.account_id AND quotes.status = 0 
WHERE primary_sales_id = 2 AND quotes.quote_id = quote_items.quote_id 
ORDER BY quotes.date_submitted DESC 

Вы можете игнорировать часть account_id. В основном моя линия 3 должна отличаться, и я знаю, но как это сделать, я не уверен.

Если бы я котировки, глядя, как этот

quote_id | quote_name 
1  | quote1 
2  | qute2 

и quote_items глядя, как этот

quote_id | item_name 
1  | boards 
2  | nails 
2  | blocks 

я должен получить назад

quote_id | quote_name | item_name 
1  | quote1  | boards 
2  | quote2  | nails 
+0

Вместо дерева, вы имеете в виду доски, я думаю –

+0

Упс ... да, это правильно – ed209

+0

@ user1815207 Я исправил опечатку дерева <-> доски –

ответ

1

Вы можете использовать:

SELECT DISTINCT quotes.quote_id, quote_name, item_name 
FROM quotes, quote_items 
WHERE quotes.quote_id = quote_items.quote_id 
group by (quote_id); 
+0

Хотя я ценю помощь, это не сработает, так как он будет возвращать один и тот же quote_id более одного раза. Также ему нужно было бы прочитать quotes.quote_id в строке 1 или это неоднозначно – ed209

+0

@ user1815207 это правильно? –

+0

Нет ... quote_id все равно будет отображаться более одного раза – ed209

Смежные вопросы