簡體   English   中英

使用MySQL從兩個聯接表中列出用戶

[英]List users from two joined tables with mySQL

我有兩個表:

___酒店

|-------------|------------|
| 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 (女巫是超級管理員),它將無法正常工作。 它不返回任何行。

我想退回一行。

請問我做錯了什么?

非常感謝。

我假設您的意思是您希望在沒有hotelid的用戶搜索時返回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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM