LEFT JOIN

5 отговора 316 прегледа
#1

LEFT JOIN

От това което прочетох във mysql manual-ите под ръка и в интернет останах с впечатлението че LEFT JOIN добавя колоните от дясната таблица към всеки запис от лявата и ако не отговарят на ON критерия просто им придава стойност нула.

следващата заявка обаче не ми връща никакви долепени стойности в края на таблицата а просто селектира всички от t1

mysql>
SELECT t1.* FROM t1
LEFT JOIN t2 ON t1.COL4=t2.ID;

защо става така?

Отговор
в отговор на id #2

Re: LEFT JOIN

ами защото ти си му казал точно това ;-)

SELECT t1.* ....

никъде не пишеш, че искаш нещо от t2

а в WHERE клаузата няма ограничение за какво да вземе от t1 - и за това взима всичко

пробвай
SELECT t1.*, t2.* ....
и ще видиш разликата

НОООО не ползвай * (не е добре ;-))), а си описвай колоните една по една с AS при това, защото при дублирание имена на колони може да се почудиш, какво виждаш и т.н.

например

SELECT t1.id AS t1_id, t2.id AS t2_id ....

Отговор
в отговор на id #3

Re: SELECT (NULL = 0), (NULL != 0); -> NULL, NULL

NULL и нула са съвършено различни неща.

За останалото phpGuru много добре ти е отговорил

salle.online.bg/sig
Отговор
в отговор на salle #4

Re: SELECT (NULL = 0), (NULL != 0); -> NULL, NULL

за NULL и нула знам че са различни, лошото е че не знам всички случаи при които се различават.

карай, и без това ще ми се наложи да ги уча скоро...

просто сега ми трябва за нещо съвсем любителско :)

Отговор
в отговор на id #5

Re: SELECT (NULL = 0), (NULL != 0); -> NULL, NULL

"за NULL и нула знам че са различни, лошото е че не знам всички случаи при които се различават."

В SQL във всички случаи се различават!

NULL e "неизвестно, неопределено, невъзможно" с две думи NULL е начина по който SQL казва "Не 'нам" и вдига рамене.

salle.online.bg/sig
Отговор
в отговор на salle #6

Re: SELECT (NULL = 0), (NULL != 0); -> NULL, NULL

Да де, но PHP като един не чак толкова стриктен език ги третира горе долу по един и същи начин.

Отговор