2012-02-23 133 views
2

我有我的MySQL數據庫的兩個表:MySQL的:連接兩個簡單的表

table #1: follows 

    follower | following 
------------------------ 
    john  | dan 
------------------------ 
    peter  | john 
------------------------ 
    peter  | dan 
------------------------ 
    john  | peter 
------------------------ 
    dan  | peter 
------------------------ 

table #2: questions 

    text   | username 
---------------------------- 
    something  | peter 
---------------------------- 
    something1  | dan 
---------------------------- 
    something2  | peter 
---------------------------- 
    something3  | john 

比方說,我在用的用戶名「丹」的網站正在記錄。

我希望看到由我遵循的人開始的最新問題。在這種情況下,只有來自「彼得」的問題。

「follow」表包含每個人記錄的跟隨,「questions」表包含所有問題。

我知道MySql基礎知識,但我對MySql JOIN一無所知。 (< - 我想我需要JOIN來實現我的目標。)

我的問題:那麼我怎麼能在PHP腳本中做到這一點?

在此先感謝...

回答

3
SELECT q.username, q.text 
    FROM follows f 
     INNER JOIN questions q 
      ON f.following = q.username 
    WHERE f.follower = 'dan' 
+0

啊......謝謝喬!這是工作! ;)我想有問題,但它是如何工作的?我在MySql JOIN中是一個初學者,所以如果我想稍後修改腳本,我不知道該怎麼做!那麼你能簡單地解釋一下它是什麼嗎?謝謝... :) – Akos 2012-02-25 09:14:47

1

這是更有效地做數據庫上的記錄過濾,而不是所有的記錄下來傾銷和做你的PHP腳本中。您的查詢既可以使用來完成一個聯接:

SELECT q.* 
FROM questions q 
JOIN follows f ON f.following = q.username 
WHERE f.follower = 'dan' 

或子查詢

SELECT q.* 
FROM questions q 
WHERE q.username IN (SELECT f.following 
         FROM follows f 
         WHERE f.follower = 'dan') 

(外你的問題的範圍,但可能要某種類型的唯一索引添加到您的表,所以如果你想刪除一個特定的問題或者刪除一個你正在關注的人,你可以通過刪除索引來實現,而不必指定字段組合來獲得你的獨特記錄。)

0

- 使用USING子句 SELECT * FROM 一個INNER JOIN B USING()

- 與ON子句 SELECT * 內部聯接從INNER JOIN B 上。 = b。

試試這種方法:)