Цитата(s2s2 @ 8.3.2013, 16:49)
Пишем так:
Код
SELECT ts.id, ts.marka, ts.gosnumber, kontroller.SnKontroller dyt.sndyt, drt.sndrt FROM ts, kontroller, setupkontroller, setupdut, setupdrt, dyt, drt WHERE (ts.id = setupkontroller.idts AND kontroller.id = setupkontroller.idKontrpller AND setupkontroller.Removed<>'TRUE' AND ts.id = setupdrt.idts AND drt.id = setupdrt.iddrt AND ts.id = setupdyt.idts AND dyt.id = setupdyt.iddyt)
То тогда результата равен 0 строк
А вот теперь внимательно смотрим на твою схему таблиц. И выписываем все условия отбора как надо. Например, с JOIN:
SQL
SELECT ts.id, ts.marka, ts.gosnumber, kontroller.SnKontroller dyt.sndyt, drt.sndrt
FROM ts LEFT JOIN setupkontroller ON ts.id=setupkontroller.idts LEFT JOIN kontroller ON setupkontroller.idKontroller=kontroller.id LEFT JOIN setupdyt ON ts.id=setupdyt.idts LEFT JOIN dyt on setupdyt.iddyt=dyt.id LEFT JOIN setupdrt ON ts.id=setupdrt.idts LEFT JOIN drt ON setupdrt.iddrt=drt.id
WHERE setupkontroller.Removed<>'TRUE'
Кстати, у тебя тут столько опечаток было, что я не удивляюсь, почему запрос не работает. Или ты всё набирал заново, не копипастом?
Ещё, если у тебя СУБД Oracle, то все эти LEFT JOIN бесполезны, так как он до сих пор сперва делает INNER JOIN а потом его уже ограничивает по условиям LEFT JOIN, то есть их без какой-либо потери производительности можно убрать в WHERE, как у тебя и было. С MySQL, раз они сейчас принадлежат тому же ораклу — вполне возможно то же самое, тут я не в курсе ситуации.
Ну и уже в третьих: ты точно уверен, что у тебя таблицы все заполнены и результат запроса будет не пустой?
Попробуй раздробить его, то есть подключай таблицы по очереди. По две. Я про setupdyt и dyt, setupdrt и drt. А ещё SnDYT ты можешь добыть через таблицу Tarirovka, точно таким же образом.