我的数据库(MySQL)中有几个不同的表。
这是桌子的相关沙发
table_tournaments
table_tournament_results
table_players
“锦标赛”表包含有关锦标赛的信息,“锦标赛结果”表显示该表的结果。
我想按名称搜索锦标赛表,然后用返回的结果从锦标赛结果表中获取信息。
SELECT * FROM `tournaments` `WHERE` `tournamentName` LIKE "%Query%"
我不知道该怎么做,也许我需要通过PHP
做点什么,任何和所有的帮助都是值得感谢的。
发布于 2015-05-12 19:38:23
您可以使用join操作获得所需的结果。
这是一个外部联接的示例,它返回t
中的所有行,其中字符串'foo'
显示为tournament_name
的一部分,以及来自r
的任何匹配行。
两个表中的行之间的关系是通过将公共值存储在两个表的tournamentId
列中来建立的。ON
子句中的谓词指定确定行是否“匹配”的条件。
SELECT t.tournamentId
, t.tournamentName
, t.tournamentStatus
, r.playerId
, r.playerName
, r.playerRank
FROM table_tournaments t
LEFT
JOIN table_tournament_results r
ON r.tournamentId = t.tournamentId
WHERE t.tournament_name LIKE '%foo%'
ORDER
BY t.tournamentId
, r.playerId
表名后面出现的t
和r
是表别名,我们可以通过在列名前面加上表别名和点来限定对每个表中列的引用。这使得列引用明确无误。(对于tournamentId
,MySQL不知道您指的是t
还是r
中的列,因此我们限定它以使其显式化。对于所有列引用,我们都遵循相同的模式。然后,读语句的人不需要想知道哪个表包含列playerId
。
发布于 2015-05-12 19:44:16
您的查询可能如下所示
SELECT a.*, b.tournamnetName FROM table_tournament_results a
left join table_tournaments on a.tournamentId=b.tournamentId
WHERE b.tournamnetName LIKE "%Query%"
https://stackoverflow.com/questions/30205164
复制相似问题