2012-02-27 75 views
0

所以我一直在寻找这样做,并想出了我想这是我想做的基础知识。我有四张桌子。一个是用户信息表,表示“这是你获得信息的用户”。其他三个有我需要的实际信息。如何合并这些选择/连接?

table_1有关于哪个用户的信息。所以用户ID。

table_2对用户而言具有与table_3的内容相关的唯一标题和说明。 table_3拥有所有基本信息。任何用户在table_3中都可以有相同的行。 TABLE_3说:“这是内容”和TABLE_2说:“这是这个特定的用户如何有关系TABLE_3。

TABLE_4是TABLE_2组行。

这样用户就可以说我要这张照片,视频,无论在“酷东西”组中,一旦所有信息都添加到数据库中,您将在用户需要的组中找到基本内容信息(table_3),这将成为用户特定的内容,因为将其添加到table_2中

其实将所有的信息都放到数据库中很容易,把它拉出来放在一起就是我感到困惑的地方,每个ON部分都是相关的,我的数据库在nodb和我设置了外键,例如在第一个SELECT上table_2.userId是table_1.id的外键。

而我最后想要的是我猜标题,描述,链接,组名称的数组。我使用PHP与MySQL,但我想我可以找出我需要做的事情,如果我真的可以得到正确的查询或我需要的查询。

如果需要更多的信息,请让我知道,这样我就可以使事情变得更加清晰。

SELECT tile, description 
FROM table_2 
INNER JOIN table_1 
ON table_2.userId = table_1.id 

SELECT link 
FROM table_3 
INNER JOIN table_2 
ON table_3.id = table_2.table_3Id 

SELECT groupName 
FROM table_4 
INNER JOIN table_2 
ON table_4.id = table_2.table_4Id 
+0

SO是一个很好的地方为,所以我只希望更改标题为“我如何可以结合这些连接?”。顺便说一句,我认为你的问题会更容易阅读,如果你只包含表格定义而不是明文描述。 – AndreKR 2012-02-27 19:46:46

+0

@AndreKR看起来像一个mod改变了我的。我只是不想让人们为我做我的工作。这种感觉很脏。 – townie 2012-02-27 20:07:28

回答

1
SELECT tile, description, link, groupName 
FROM table_2 
JOIN table_1 ON table_2.userId = table_1.id 
JOIN table_3 ON table_3.id = table_2.table_3Id 
JOIN table_4 ON table_4.id = table_2.table_4Id 
+0

是否有我应该使用JOIN而不是INNER JOIN的原因?我会检查你作为答案,因为你先回答了,但我想首先知道。 – townie 2012-02-27 20:10:09

+0

它更短。 ;)对于MySQL来说,它们都是相同的。 – AndreKR 2012-02-27 20:13:34

1

结合您查询到一个查询有多个连接。

事情是这样的:

SELECT tile, description, link, groupName 
FROM table_2 
INNER JOIN table_1 
ON table_2.userId = table_1.id 
INNER JOIN table_2 
ON table_3.id = table_2.table_3Id  
INNER JOIN table_2 
ON table_4.id = table_2.table_4Id  
+0

每个INNER JOIN应该是table_1吗? – townie 2012-02-27 20:16:16

+0

我不知道回复的地方在哪里,但是我原来并没有注意到这是一个错字。我只是把它固定在我的原版中。 – townie 2012-02-27 20:23:07

+0

我修复了我的答案以符合您更新的OP。 – 2012-02-27 20:25:03