我是新来的PHP和MySQL,我尝试了2天创建一个Web应用程序,它可以存储有关用户从窗体中的特定数据,并允许用户基于类似的稍复杂的形式。我得到的表单工作,也输入到数据库,但我有接收来自MySQL的数据的问题,也许将来我也会与搜索功能,但我没有多少考虑。现在我专注于从db中获取特定数据。有多个连接的查询和太多的结果返回
SELECT players.*,
brackets.name AS interested_in,
classes.name AS looking_for,
tags.name AS tagged_with
FROM players JOIN player_brackets ON (players.id = player_brackets.player_id)
JOIN brackets ON (player_brackets.bracket_id = brackets.id)
JOIN player_classes ON (player_brackets.player_id = player_classes.player_id)
JOIN classes ON (player_classes.class_id = classes.id)
JOIN player_tags ON (player_classes.player_id = player_tags.player_id)
JOIN tags ON (player_tags.tag_id = tags.id)
WHERE players.id = '18'
我有这个疑问,工作正常,但我从中得到的数据是在数据库中的数据的每一个组合,其目前约100项多成果,这是几乎一样的。它将数据结果乘以数据库中的字段数,例如玩家(1)*括号(3)*类别(11)*标记(5),它将输出165行几乎相同的数据,其中括号,类别和标签。
如果我将结果分组players.id
,我只得到一行,但来自其他字段的数据丢失。我想得到1行将包含所有它(col可能与数组中的多个数据)。
DB有7个表 - 玩家,标签,类,括号和3个表,其中包含玩家ID和标签/类/括号id组合。
我一直在寻找网页和SO但没有真正帮助了我。如果有人能帮助我解决这个问题,那将会非常好。感谢您的回复,我很抱歉我的英文不是我的主要语言。
你不是应该使用INNER JOIN代替JOIN? –
INNER JOIN和JOIN为我输出完全相同的结果。我也尝试了SELECT DISTINCT,但它们都一样。 –
你可以在这里发布你的模式吗?还有,“GROUP BY players.id”怎么样? –