2017-04-03 61 views
0

我在其他類似的問題上嘗試了很多針對這個問題的解決方案,但是我無法讓它工作。從兩個表中選擇行

我在我的數據庫中有一個名爲'遊戲'的表格,列中有:k1,k1r,k2,k2r,k3,k3r和星期。周列會自動插入一年中的某一週,其他則是我製作的博彩遊戲的用戶輸入。

然後我有一個名爲'matches'的表,其中有列:match1,match2,match3,week。再次,與周欄相同的程序。另外3個人填寫我們應該下注的比賽。

然後我有一個查詢:

SELECT * 
FROM game 
WHERE week = '.$week; 

$week已被設置爲$week = Date('W');

它輸出一個表,其中我寫的比賽中3列,然後在呼應行中的用戶投注比賽。但是,不是每次有新的匹配時都改變php腳本,我希望它從表格'匹配'中把它們帶走。這樣,我也保留了數據庫中的舊匹配。

所以,現在我的問題:)

我想要做的是一樣的東西:

'SELECT * FROM game WHERE week = '.$week.' JOIN * FROM matches WHERE week = '.$week; 

但正如你可能現在,這是行不通的:/

但是我應該怎麼做呢?

+2

你應該在匹配表中使用一個將兩個錶鏈接在一起的外鍵。例如,當你保存一個遊戲也保存比賽,例如id_match_fk – Akintunde007

回答

0

您的查詢應該是這樣的。 你基本上將比賽與使用本週的比賽相關聯。您還可以使用更好,更獨特的比賽ID鏈接。但請在下面試試

select g.*,m.* FROM game g inner join matches m on g.week=m.week where g.week='.$week; 
+0

你的答案也是正確的..但我認爲我在我的問題上犯了一個錯誤。我需要它循環遍歷'遊戲'表,並採取所有行,但我只需要一行,一次從'匹配'表。當我像你說的那樣做時,它會迴應每一個「比賽」之間的比賽排? –

0

如果我理解正確的,那麼試試這個:

SELECT * FROM game g JOIN matches m ON g.week = m.week WHERE g.week = ' . $week; 
+0

哇,非常感謝你!你能向我解釋'ON'部分嗎?因爲我有其他條件,我只是沒有寫現在:) –

+0

@DanielJensen更多信息請參考https://dev.mysql.com/doc/refman/5.7/en/join.html 通過簡單的說, on「用於在其他表格的列之間設置綁定以加入其 –

+0

但我也需要它來從'遊戲'中選擇列'grp'爲bs的行。所以實際上在加入之前,它是''SELECT * FROM game WHERE week ='。$ week。' AND grp ='bs'''' ..我怎麼寫這個? –