Как получить все строки из столбца с предложением WHERE и INNER JOIN - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть запрос, где он ищет слово Car и возвращает результат, но когда я ищу с INNER JOINS, строка слова Car отсутствует. как получить все строки?

select word.lemma, synset.pos, synset.definition 
from word 
left join sense on word.wordid = sense.wordid 
left join synset on sense.synsetid = synset.synsetid 
where word.lemma = 'car' 
order by synset.pos

Результат:

enter image description here

SELECT 
    a.lemma AS `word`,
    c.definition,
    c.pos AS `part of speech`,
    d.sample AS `example sentence`
FROM
    word a
        INNER JOIN
    sense b ON a.wordid = b.wordid
        INNER JOIN
    synset c ON b.synsetid = c.synsetid
        INNER JOIN
    sampletable d ON c.synsetid = d.synsetid
WHERE
    a.lemma = 'car'

Результат:

enter image description here

1 Ответ

0 голосов
/ 04 апреля 2019

Измените все свои ВНУТРЕННИЕ РЕЗУЛЬТАТЫ, чтобы вместо них было написано: «ЛЕВЫЙ РЕЙТИНГ»

Строка исчезает, потому что нарушена одна из ваших объявленных связей, и в b нет соответствующей строки для этой конкретной строки в a, или нет соответствующей строки в c для конкретной строки в b и т. Д.

Используя левые соединения, база данных будет хранить строку вместо a вместо ее удаления и заполнять пустыми значениями для каждого значения столбца из b (или c, в зависимости от того, какая таблица), где нет строки, которая соответствует

Посмотрев на NULL, вы сможете увидеть, где находится пропущенная строка, и вы можете решить добавить ее. Если вы добавите его, INNER JOIN снова начнет показывать строку

...