Общие > Базы данных

Или я глючу или MySQl помогите разобраться

(1/2) > >>

FoxMulder:
Почему при таком запросе :
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 а при втором все ок!

Помогите плиз!

fidget:
NULL при LEFT JOIN\'е может выводиться, когда в правой таблице нету соответствующих записей

FoxMulder:
так в том-то все и дело что соответствие есть!
только при join`е почему-то она его ненаходит а если как я указал во втором запросе явно имеется ввиду (d.idm=m.idm) то все впорядке! Почему же тогда так происходит? Может сам запрос не корректно построен?

fidget:
это разные JOIN\'ы

то, что идет как table1,table2 where - это INNER JOIN
а в первом случае у тебя LEFT JOIN

FoxMulder:
Зы.. а вот если указать where l.idl=23150 то первый вариант показывает корректно т.е. 21 | 23150 | is101854 | 1 | infos_bv | default | Default  
почему же тогда без конкретного указания он мне выдает NULL? кстати у меня стоит MySQl ... мож все таки MySQl глючит а?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

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 
Перейти к полной версии