что не так с моим заявлением sql? - PullRequest
0 голосов
/ 23 ноября 2011

Я знаю, как работает предложение where, но в этом случае, похоже, оно не работает .. возможно, это из-за того, что я запутался со всеми левыми соединениями и переименованием и тем, что у вас есть.

Так что это утверждение прекрасно работает без where, но когда я добавляю предложение where, оно говорит, что столбец в предложении where неизвестен .... Кто-нибудь знает, что случилось?

select t1.name AS DistroName,t2.name AS OriginName, t3.name AS DesktopName, t3.name AS desktoptest , t2.country, t1.status, t2.description , t5.name as oldtest, t6.name as multitest, t4.name as begintest
from alldistros t1 
LEFT join origin t2 on t1.name=t2.name
LEFT join desktop t3 on t2.name=t3.name
LEFT join beginnerdistributions t4 on t3.name=t4.name
LEFT join oldcomputers t5 on t4.name=t5.name
LEFT join multimedia t6 on t5.name=t6.name
WHERE DistroName = 'Absolute LInux'

Спасибо Жуань

Ответы [ 3 ]

5 голосов
/ 23 ноября 2011

Попробуйте изменить

WHERE DistroName = 'Absolute LInux'

до

WHERE t1.name = 'Absolute LInux'
0 голосов
/ 23 ноября 2011

Возможно, у вас есть неоднозначное значение DistroName для нескольких таблиц, попробуйте набрать where t1.DistroName = "" or t1.DistroName ...

0 голосов
/ 23 ноября 2011

используйте t1.name в предложении where

select t1.name AS DistroName,t2.name AS OriginName, t3.name AS DesktopName, t3.name AS desktoptest , t2.country, t1.status, t2.description , t5.name as oldtest, t6.name as multitest, t4.name as begintest
from alldistros t1 
LEFT join origin t2 on t1.name=t2.name
LEFT join desktop t3 on t2.name=t3.name
LEFT join beginnerdistributions t4 on t3.name=t4.name
LEFT join oldcomputers t5 on t4.name=t5.name
LEFT join multimedia t6 on t5.name=t6.name
WHERE t1.name= 'Absolute LInux'
...