我有两个mysql表。基本上我想在一个SQL查询中组合两个查询(每个表一个)。好像它应该很容易(有点像内部Join)但是内连接是将表2中的非uniqe值重复到我的结果数组中...我不希望它们重复...我想要从表/查询2重复这些合并到 query1
的结果记录中查询1从表1中获取记录。结果是唯一的。 (一个ID返回一个记录)它只是返回ID等于我的一个条件的记录上的所有字段。 [我使用IN而不是一堆OR)
$sid = "'M-179','M-242','M-231','Q-2thru5'" ;
$query = "SELECT * FROM table1 WHERE IN ($sid)`
查询2从表2中获取记录。但结果不是唯一的。一个ID可以返回许多记录。
$query2 = "SELECT extra_data, pub_url FROM table2 WHERE IN ($sid)";
所以我想要每个extra_data&来自ALL返回记录的pub_url字段刚刚打到查询1结果的末尾。我有道理吗?所以结果看起来像这样......
[0] => Array
(
* all my returned fields from the
record returned by query 1 here
$row['extra_data']
$row['pub_url'] <-returned record from query 2
$row['extra_data']
$row['pub_url'] <-another returned record from query 2
$row['extra_data']
$row['pub_url'] <-any another returned
record from query 2, etc..
)
答案 0 :(得分:0)
结合结果是什么意思?
您是否希望query2的结果显示在同一个结果中 相关的行,但只是额外的列,或者你想要它们 显示为新行。
对于第一种情况,您必须使用JOIN
。
但我觉得你想要做的就是第二个
案件。在这种情况下,您必须使用UNION
。但请注意,
在这种情况下,两个查询的列必须匹配。所以
两个查询的联合看起来像这样:
-- pseudo code only
SELECT extra_data, pub_url FROM table1 WHERE IN ($sid)
union
SELECT extra_data, pub_url FROM table2 WHERE IN ($sid)
答案 1 :(得分:0)
尝试类似的内容,将表1的结果连接到包含sid值的列的表2。
SELECT a.*, b.extra_data, pub_url
FROM table1 a
left outer join table2 b on a.sid = b.sid
WHERE a.sid IN ($sid)