从两个表中选择行

问题描述:

我在其他类似的问题上尝试了很多针对这个问题的解决方案,但是我无法让它工作。从两个表中选择行

我在我的数据库中有一个名为'游戏'的表格,列中有: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

您的查询应该是这样的。 你基本上将比赛与使用本周的比赛相关联。您还可以使用更好,更独特的比赛ID链接。但请在下面试试

select g.*,m.* FROM game g inner join matches m on g.week=m.week where g.week='.$week; 
+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'''' ..我怎么写这个? –