2017-01-19 77 views
0

我有兩個錶鏈接兩個表。使用外鍵,其中一個表包含圖像和其他用戶信息

表A

CREATE TABLE `TableA` (
    `picID` int(11) NOT NULL, 
    `logos` varchar(200) DEFAULT NULL, 
    `user_id` varchar(20) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

表B

CREATE TABLE `TableB` (
    `user_id` int(11) NOT NULL, 
    `user_name` varchar(12) NOT NULL, 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

TableAforeign keyuser_id。而用戶屬於一個叫會員的會話。

user_id=".$_SESSION['members']); 

picIDTableA一個主鍵和user_idTableB主鍵,都設置爲自動增量,而不是空。

那麼我想知道如何在邏各斯TableA到用戶表,TableB,這樣,當我使用回聲圖像中TableA相關行會只有特定的用戶會話中顯示相關聯。

換句話說,user_id應該與picID的特定行相關聯,以便每個用戶都擁有自己的圖像行以及獨特的圖像。

,但我似乎無法弄清楚如何將兩個表使用我的外鍵user_id在我的數據庫鏈接。

+1

「每個用戶都有他或她自己的形象行」。如果每個用戶只能有1個圖像關聯,那麼我不認爲你真的需要一個單獨的表。您可以將徽標字段放入用戶表中。 – ADyson

+0

碼香港專業教育學院發佈只包含一個圖像,因爲我嘗試理解其中的邏輯,但在我的項目,我的形象表中有6幅圖像,標識,imageA,ImageB,ImageC,成像和頭image.ive設計,其中圖像是一個完整的邏輯也使用unlink保存並從文件夾中刪除。但需要將用戶行與映像表上傳的圖像相關聯 – RileyManda

+0

是的,您有6個圖像域。但是你說每個用戶只有一個圖像行與它們相關聯,對嗎? – ADyson

回答

1

這個查詢將返回與每個用戶相關聯的所有圖像。

 SELECT b.user_id, b.user_name, a.picID, a.logos 
     FROM TableB b 
     LEFT JOIN TableA a ON a.user_id = b.user_id 
     WHERE b.user_id = $user_id 

或者,如果你只關心TableB在這方面的內容做這個簡單的查詢:

 SELECT a.picID, a.logos 
     FROM TableA a 
     WHERE a.user_id = $user_id 
     ORDER BY a.picID DESC LIMIT 1 

你超出這個問題並不清楚。不過,如果用戶有多個圖像關聯,我想你只需要一個圖像。

所以,你需要決定你將如何在圖像中進行選擇。一種選擇是:爲用戶選擇最新的圖像。在這種情況下,將這一行附加到我剛剛給你的任何一個查詢。

 ORDER BY a.picID DESC LIMIT 1 

我定義最新的圖像這裏與picID最高值圖像。

+0

好的,謝謝。 – RileyManda

相關問題