我有两个表:
___酒店
|-------------|------------|
| HOT_HotelId | HOT_Name |
|-------------|------------|
| 1 | Hotel A |
| 2 | Hotel B |
|-------------|------------|
___ UsersHotelsLink
|--------|------------|-------------|
| UHL_Id | UHL_UserId | UHL_HotelId |
|--------|------------|-------------|
| 1 | 1 | |
| 2 | 131 | 1 |
| 3 | 131 | 2 |
|--------|------------|-------------|
我想为___Hotels
中的用户列出___UsersHotelsLink
中的酒店。
因此,我正在使用此工作查询:
SELECT *
FROM ___UsersHotelsLink
LEFT JOIN ___Hotels
ON ___UsersHotelsLink.UHL_HotelId = ___Hotels.HOT_HotelId
WHERE HOT_Status != "inactive"
AND UHL_Status != "inactive"
AND UHL_UserId = 131
ORDER BY HOT_Creationdate ASC
当用户(131)在___Hotels
表中有一家旅馆时,此功能起作用。但是,如果我将131
替换为1
(女巫是超级管理员),它将无法正常工作。它不返回任何行。
我想返回一行。
请问我在做什么错?
非常感谢。
答案 0 :(得分:0)
我假设您的意思是希望没有hotelid
的用户搜索时返回一行。假设这样,您的where
条件否定了outer join
,从而导致没有行返回。将其移至on
条件,它应返回null
酒店数据给用户:
SELECT *
FROM ___UsersHotelsLink
LEFT JOIN ___Hotels
ON ___UsersHotelsLink.UHL_HotelId = ___Hotels.HOT_HotelId
AND HOT_Status != "inactive"
WHERE UHL_Status != "inactive"
AND UHL_UserId = 131
ORDER BY HOT_Creationdate ASC