簡體   English   中英

Select 來自基於 id 的同一個 MySql 表

[英]Select from within same MySql table based on id

我正在構建一個基本的相冊頁面,頂部是 selectec 照片,下面是相冊縮略圖的 rest。 URL的結構如下:

/photos/photo.php?id=164

表結構包含事件、文件名和 ID 字段

事件字段可以歸因於來自同一事件的多個圖像。 事件字段也可以連接到事件表,它將同一事件下的不同種族聚集在一起。

對於下面的縮略圖,我想 select 除了 ID 在 URL 中的那張照片之外,對於與 ZE6B391A8D2C4D45903DZA23 中的 GET 相關聯的事件。

我相信需要一個內部連接,但我正在努力讓它發揮作用。 這是我的查詢,它可以 select 照片不是正在顯示的照片(來自 URL) - 但它不能限制為僅顯示與正在顯示的圖像相同的事件的其他照片。

SELECT distinct pg.`filename`, pg.`event`, pg.`id` 
    from photogallery pg 
    INNER JOIN photogallery pg2 on pg.`event` = pg2.`event` 
    WHERE pg.`id` <> 302 and pg.`event` = pg2.`event`

示例數據集:

Filename   ¦¦ Event ¦¦ ID
1983-1.jpg ¦¦ 1983  ¦¦ 1
1983-2.jpg ¦¦ 1983  ¦¦ 2
1983-3.jpg ¦¦ 1983  ¦¦ 3
2001-1.jpg ¦¦ 2001  ¦¦ 4
2001-2.jpg ¦¦ 2001  ¦¦ 5
2001-3.jpg ¦¦ 2001  ¦¦ 6

如果 GET 設置為 1,我希望查詢僅顯示 ID 2 和 3。但它顯示的 ID 為 2、3、4、5、6。

您可以通過對 equal event進行內部自我加入來做到這一點。 但是您需要在其中一個實例中過濾尋找的id ,並在兩個實例中過濾id的不相等性。

SELECT pg1.filename,
       pg1.event,
       pg1.id
       FROM photogallery pg1
            INNER JOIN photogallery pg2
                       ON pg1.event = pg2.event
       WHERE pg2.id = 1
             AND pg1.id <> pg2.id;

暫無
暫無

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

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