簡體   English   中英

php mysql內部聯接-獲取特定行

[英]php mysql inner join - get a particular row

這是我的查詢,用於從一個表中獲取模型信息,並從另一表中獲取單個圖片。 為了使查詢在ORDER BY sort DESC中得到圖片,我必須對此查詢進行哪些更改? 在圖片的表格中,有一個名為“ sort”的字段。 每行字段的默認值為0。但是隨機行的值為1。我想獲取該特定行。 但是,我不想使用WHERE sort = 1,因為即使在沒有行具有排序值1的情況下,也應該提取一行。

    $sql="SELECT tc.id,tc.alias,tc.firstname,tci.imagename 
          FROM ".$pre."models tc
          INNER JOIN ".$pre."model_images tci ON tc.id=tci.userid 
          WHERE activated=1 AND sex=$sex AND city=$city AND published=1
          GROUP BY tc.id ORDER BY firstname ASC";

先感謝您!


解決方法:

    SELECT tc.id,tc.alias,tc.firstname, 
    (SELECT imagename FROM  ".$pre."model_images WHERE userid= tc.id 
    ORDER BY sort DESC LIMIT 1) AS imagename
    FROM ".$pre."models tc
    WHERE tc.activated=1 AND tc.sex=1 AND tc.city=2 AND tc.published=1
    ORDER BY tc.firstname ASC

您也應該將其放在WHERE子句中。 不過要注意的一點是,請謹慎使用列名。 最好告訴它們屬於哪個表。

所以這:

WHERE activated=1 AND sex=$sex AND city=$city AND published=1

應該:

WHERE tc.activated=1 AND tc.sex=$sex AND tc.city=$city AND tc.published=1

然后只需向其添加“排序”列:

WHERE tc.activated=1 AND tc.sex=$sex AND tc.city=$city AND tc.published=1 AND tci.sort=1

如果未返回任何結果,請確保存在符合要求條件的記錄。 因為查詢沒有問題。 嘗試將查詢打印到屏幕等上,以查看每個變量是否都有一個值。

編輯:

您應該丟失GROUP BY。

SELECT tc.id,tc.alias,tc.firstname,tci.imagename 
FROM ".$pre."models tc
INNER JOIN ".$pre."model_images tci ON tc.id=tci.userid 
WHERE tc.activated=1 AND tc.sex=$sex AND tc.city=$city AND tc.published=1 AND tci.sort=1

暫無
暫無

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

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