Forum Webscript.Ru

Общие => Базы данных => Тема начата: Ireany от 22 Мая 2004, 17:44:57

Название: Помогите с запросом! Надо выбрать товары НЕ связанные с разделами!
Отправлено: Ireany от 22 Мая 2004, 17:44:57
Версия MySQL 3.23.53-max

items
----------------------------------------------------------
item_id | name_item | description | price


links
---------------------------
item_id | razdel_id


Необходимо выбрать из таблицы items товары, которые не числятся в таблице links.
Я сделал так:

SELECT items.name_item FROM items, links WHERE NOT items.item_id = links.item_id;

Но мускул не выводит ни одной строки, хотя таких записей должно быть достаточно много.

Помогите правильно составить запрос.
Название: Помогите с запросом! Надо выбрать товары НЕ связанные с разделами!
Отправлено: fidget от 22 Мая 2004, 23:55:10
SELECT .. FROM items LEFT JOIN links USING (item_id) WHERE item_id IS NULL

http://dev.mysql.com/doc/mysql/en/Rewriting_subqueries.html
Название: Помогите с запросом! Надо выбрать товары НЕ связанные с разделами!
Отправлено: Ireany от 23 Мая 2004, 18:16:54
Я так тоже пробовал, странно.. но ответ муськи такой:

Column: \'item_id\' in where clause is ambiguous
Название: Помогите с запросом! Надо выбрать товары НЕ связанные с разделами!
Отправлено: Ireany от 23 Мая 2004, 18:35:33
А-а! Дошло! \'item_id\' неоднозначен!

Надо так:
...WHERE links.item_id IS NULL


Кстати, у меня джойны почему то сильно тормозят!
Может версия Муськи такая?

Вот этот запрос

SELECT items.name_item FROM items LEFT JOIN links USING (item_id) WHERE links.item_id IS NULL ORDER BY items.name_item ASC

выполняется неск. секунд при количестве записей 4000.