MySQL WHERE оператор со сравнениями между таблицами - PullRequest
0 голосов
/ 15 июня 2011

Оператор MySQL ниже дает мне три раза один и тот же результат, потому что мне нужно выбрать все данные из разных таблиц для сравнения.Как я могу сказать MySQL, что мне нужна только одна из этих записей?

SELECT watchedItems.id FROM watchedItems, globalItems, bidGroups 
WHERE (watchedItems.bidGroupID IS NULL OR (watchedItems.bidGroupID IS NOT NULL AND bidGroups.bidGroupQty > 0))
AND watchedItems.aid = globalItems.aid
AND watchedItems.maxPrice > globalItems.currentPrice

Вывод:

ID
2
2
2

Ответы [ 2 ]

3 голосов
/ 15 июня 2011
SELECT distinct(watchedItems.id) FROM ...

http://dev.mysql.com/doc/refman/5.0/en/select.html

"DISTINCT определяет удаление повторяющихся строк из набора результатов."

0 голосов
/ 15 июня 2011

Вам нужно несколько объединений:

SELECT watchedItems.id
FROM watchedItems
left join globalItems on watchedItems.bidGroupID = bidGroups.bidGroupID 
left join bidGroups on watchedItems.aid = globalItems.aid
WHERE (watchedItems.bidGroupID IS NULL OR bidGroups.bidGroupQty > 0)
AND watchedItems.maxPrice > globalItems.currentPrice

Вы получили дубликаты, потому что в таблице bidGroups было три строки.

...