2011-12-28 77 views
1

如何将以下查询合并在一起?如何将两个MySQL查询合并到一起

要获得特定类型的所有对象我用

SELECT ID FROM social_objects 
WHERE subgroup='23' ORDER BY time_created DESC LIMIT 0 , 30 

我有这样的搜索也为标题

SELECT ID FROM 'social_objects_single' 
WHERE 'title' LIKE '%indian%' LIMIT 0 , 30 

我怎样才能获得一定的头衔只有亚组23的对象?

+0

这两个表是如何相关的? – JonH 2011-12-28 15:27:19

+0

您需要告诉我们social_objects和social_objects_single之间的关系(公共关键字)social_objects_single – Icarus 2011-12-28 15:29:13

+0

表social_objects包含用户,博客等所有social_objects的id。表social_objects_single包含有关这些对象的完整信息。所以为了做一个搜索,我必须把这两张桌子放在一起,并从他们身上拿回ID。 – user632347 2011-12-28 15:30:40

回答

2

如果您social_objects_single具有相同的IDsocial_objects表,你可以这样做:

SELECT so.ID FROM social_objects so 
INNER JOIN social_objects_single soi ON soi.ID = so.ID 
WHERE so.subgroup = 23 AND soi.title LIKE '%indian%' 
ORDER BY so.time_created DESC LIMIT 0, 30; 
+0

通常,ID在每个表中都是唯一的,如果父项已经是ID,则不需要使用ID命名外键。 – JonH 2011-12-28 15:50:12

+0

@krister:我怎样才能添加一个额外的AND?我需要对social_objects表进行检查,以确定该对象是否已启用。因为我不想显示非活动内容。 WHERE so.subgroup = 23 AND soi.title LIKE%indian%。我应该在哪里添加* so.active ='yes'* – user632347 2011-12-28 17:03:26

+0

@JonH:它返回与搜索词相匹配的所有内容,而不考虑子组。如何解决它? – user632347 2011-12-28 17:39:22

4

这两张表是如何相关的?如果他们都引用您内加入一个ID和使用,结合条件:

SELECT Parent.ID, Child.ID 
FROM ParentTable 
INNER JOIN ChildTable ON ParentTable.ID = ChildTable.ForeignKeyID 
WHERE Parent.ID = 23 AND Title LIKE '%indian%' 
+0

什么应该是ForeignKeyID? – user632347 2011-12-28 15:40:51

+0

@ user632347 - 您的表格如何链接到另一个表格?父表和子表之间需要有一种关系。所以你需要能够拿出我写的东西,并填写这种关系是如何存在的。例如,在一个表中有一个ID作为主键,链表中的主键是如何表示的(作为外键通常具有相同的列名),例如,如果我有一个用户表和一个类表如果用户有一个类,我会在第三个表中有一个用户标识和一个ClassID。 UserID将引用用户表,并且ClassID将引用一个类表。 – JonH 2011-12-28 15:48:47

0

SELECT SO.ID,SOS.ID
FROM social_objects SO ,social_objects_single SOS
WHERE SOS.title LIKE '%indian% and SO.subgroup=23 and SOS.id =SO.subgroup_id

你应该替换最后的条件SOS.id = SO.subgroup_id作为你的表连接