многие ко многим.
У меня есть таблица category, word, category_word. Мне нужно взять word у которых определенный category.id. Для этого я написал вот такой запрос:
SELECT category.id AS cid, word.wd FROM word
JOIN category_word ON (word.id = category_word.word_id)
JOIN category ON (12538 = category_word.category_id)
12538 это category.id по которому нужно делать выборку, запрос должен вернуть 100 элементов, но он возвращает свыше 900 элементов.
Как правильно такой запрос написать?
SELECT category.id AS cid, word.wd FROM word JOIN category_word ON (word.id = category_word.word_id) JOIN category ON (category.id = category_word.category_id) WHERE category.id = 12538 SELECT category.id AS cid, word.wd FROM word JOIN category_word ON (word.id = category_word.word_id) JOIN category ON (category.id = category_word.category_id AND category.id = 12538) Попробовал вот такие запросы сделать возвращает, то что нужно. Какой подход более правильный и оптимальный?
Первый скорее более идиоматичен. Но технически разницы между ними нет (сейчас все движки SQL преобразуют это к одному плану запроса).
Ну неверно
Обсуждают сегодня