我已經將幾個表連接在一起以獲取我想要的數據,但由於我是SQL新手,我無法弄清楚如何停止多次返回數據。停止SQL在JOIN中返回兩次相同的結果
她的SQL語句;
SELECT
T.url,
T.ID,
S.status,
S.ID,
E.action,
E.ID,
E.timestamp
FROM tracks T, status S, events E
WHERE S.ID AND T.ID = E.ID
ORDER BY E.timestamp DESC
返回的數據是這樣的;
+----------------------------------------------------------------+
| URL | ID | Status | ID | action | ID | timestamp |
+----------------------------------------------------------------+
| T.1 | 4 | hello | 4 | has uploaded a track | 4 | time |
| T.2 | 3 | bye | 3 | has some news | 3 | time |
| t.1 | 4 | more | 4 | has some news | 4 | time |
+----------------------------------------------------------------+
這是一個非常基本的例子,但確實概述了會發生什麼。如果您查看第三行,則在有不同狀態時重複該URL。
這是我希望發生的;
+-------------------------------------------------------+
| URL or Status | ID | action | timestamp |
+-------------------------------------------------------+
| T.1 | 4 | has uploaded a track | time |
| hello | 3 | has some news | time |
| bye | 4 | has some news | time |
+-------------------------------------------------------+
請注意,當動作已上載曲目時,會顯示網址(本例中模擬曲目爲T.1)。這個非常重要。事件表中的動作插入狀態或軌道插入的觸發器中。如果插入新曲目,則操作是「已上傳曲目」,並且您猜測它的狀態。此時,ID和時間戳也被插入到事件表中。
注意:有更多的表格進入查詢,其實有3個,但爲簡單起見,我已將其留出。
由於您是SQL新手,您應該知道隱式連接是SQL反模式,您應該學會使用顯式連接。 – HLGEM