Автор Тема: Помогите с запросом! Надо выбрать товары НЕ связанные с разделами!  (Прочитано 3045 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Ireany

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Версия 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

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
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

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Я так тоже пробовал, странно.. но ответ муськи такой:

Column: \'item_id\' in where clause is ambiguous

Оффлайн Ireany

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 6
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
А-а! Дошло! \'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.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28