Forum Webscript.Ru
Общие => Базы данных => Тема начата: FoxMulder от 28 Августа 2002, 14:40:17
-
Почему при таком запросе :
ysql> select l.idd, l.idl, l.login, d.idm, d.name, m.name, m.fio FROM iplc left join l on (iplc.idl=l.idl) left join d on (d.idd=l.i
dd) left join m on (d.idm=m.idm) WHERE iplc.firstusage BETWEEN 1025467200 AND 1025553599 LIMIT 2;
+------+-------+----------+------+----------+------+------+
| idd | idl | login | idm | name | name | fio |
+------+-------+----------+------+----------+------+------+
| 0 | 12355 | is300162 | NULL | NULL | NULL | NULL |
| 21 | 23150 | is101854 | 1 | infos_bv | NULL | NULL |
+------+-------+----------+------+----------+------+------+
поля name и fio NULL ?
а при таком все ок как и должно быть? Разве нельзя соединять таблицы несколько раз или это глюк?
select l.idd, l.idl, l.login, d.idm, d.name, m.name, m.fio FROM iplc left join l on (iplc.idl=l.idl) left join d on (d.idd=l.i
dd),m WHERE iplc.firstusage BETWEEN 1025467200 AND 1025553599 AND d.idm=m.idm LIMIT 2;
+------+-------+----------+------+----------+---------+---------+
| idd | idl | login | idm | name | name | fio |
+------+-------+----------+------+----------+---------+---------+
| 0 | 12355 | is300162 | NULL | NULL | default | Default |
| 21 | 23150 | is101854 | 1 | infos_bv | default | Default |
+------+-------+----------+------+----------+---------+---------+
Т.е. в таблице m при m.idm=1 m.fio=\'Default\'
При первом запросе почему-то NULL а при втором все ок!
Помогите плиз!
-
NULL при LEFT JOIN\'е может выводиться, когда в правой таблице нету соответствующих записей
-
так в том-то все и дело что соответствие есть!
только при join`е почему-то она его ненаходит а если как я указал во втором запросе явно имеется ввиду (d.idm=m.idm) то все впорядке! Почему же тогда так происходит? Может сам запрос не корректно построен?
-
это разные JOIN\'ы
то, что идет как table1,table2 where - это INNER JOIN
а в первом случае у тебя LEFT JOIN
-
Зы.. а вот если указать where l.idl=23150 то первый вариант показывает корректно т.е. 21 | 23150 | is101854 | 1 | infos_bv | default | Default
почему же тогда без конкретного указания он мне выдает NULL? кстати у меня стоит MySQl ... мож все таки MySQl глючит а?
-
FoxMulder
я тебе ничего не могу сказать кто из вас глючит (да и другие тоже врядли смогут), т.к. я не знаю ни структуры твоих таблиц, ни данных, которые там лежат, ни версии твоего мускля и т.д ...