我有這個圖,它應該說明我的情況我需要參加3個表,我不知道該怎麼做這種事情一定的幫助:加入3個三個表
所以我可以去通過這樣做檢索記錄的while循環:
<img src="<?php echo $row['filename']; ?>" alt="" />
Album: <?php echo $row['album_name']; ?>
AlbumID: <?php echo $row['album_id']; ?>
我有這個圖,它應該說明我的情況我需要參加3個表,我不知道該怎麼做這種事情一定的幫助:加入3個三個表
所以我可以去通過這樣做檢索記錄的while循環:
<img src="<?php echo $row['filename']; ?>" alt="" />
Album: <?php echo $row['album_name']; ?>
AlbumID: <?php echo $row['album_id']; ?>
使用INNER JOIN將防止返回沒有圖像的相冊。 ORDER BY ... DESC將按降序對結果進行排序,但我不確定如何僅返回最後一條記錄。這可能需要某種ORDER BY,GROUP BY和TOP的組合。
SELECT
album_table.album_id,
album_table.album_name,
images_table.filename
FROM album_table
INNER JOIN images_table ON images_table.album_id = album_table.album_id
WHERE album_table.user_id = uid
ORDER BY images_table.date DESC
@markus:我的意思是寫INNER JOIN! (編輯來解決這個問題)。即使沒有關聯的圖像,LEFT JOIN也可以用於返回相冊。 – 2011-03-22 19:45:29
這是我正在查找的SQL語法。謝謝! – MacMac 2011-03-22 19:45:33
@lolwut:如果你找出只返回**最後一張**圖片的語法,請告訴我們。 – 2011-03-22 19:47:18
堆棧溢出的許多人不喜歡w3schools,我發現了困難的方式。 – 2011-03-22 19:36:19
是的,我知道。然而,對於許多簡單的事情來說,這不是一個很好的來源,它提供了易於閱讀的例子 我認爲w3schools最大的問題是它已經過時了HTML/CSS部分,而不是MySQL頁面。 – 2011-03-22 19:39:47
@lolwut:嘗試 -
SELECT
album_table.album_id, album_table.album_name, images_table.filename
FROM album_table
INNER JOIN images_table ON images_table.album_id = album_table.album_id
INNER JOIN users_table ON users_table.uid = album_table.user_id
WHERE (users_table.uid = ' . $uid . ')
ORDER BY images_table.date DESC
$uid
應在當前登錄的用戶的會話...或者你可以留下WHERE
條款進行完全,如果你想返回所有用戶的信息。
實際上,在這種情況下,您只需要連接兩個表格(作爲一般的經驗法則,您所做的聯接越少越好)。
由於您知道用戶ID,因此您可以直接查詢相冊表名稱。
如果您的users_table碰巧有另一列「user_name」,並且您想搜索該列,那麼您需要加入到users表中。
SELECT filename, album_name, album_id
FROM album_table at, images_table it
AND at.album_id = it.album_id
AND at.user_id = $user_id
爲什麼你在沒有顯式連接的情況下編寫你的查詢? – markus 2011-03-22 19:46:25
你要求的SQL語法或建議在加入是否是正確的操作,還是什麼? – Pops 2011-03-22 19:34:05
SQL語法很有用,因爲我可以一次連接兩個表。但是3是我做不到的。對於重申我的問題的人來說,這不是功課。 – MacMac 2011-03-22 19:36:26