【发布时间】:2012-03-09 16:15:39
【问题描述】:
我昨天问了一个类似的问题,但输出仍然有一点问题。 Unions 只总是将它组合成一列,并且没有关系来进行连接。这就是我想要的。我不想合并。
SELECT prd_id FROM products WHERE title LIKE %$var%;
AND
SELECT lst_id FROM lists WHERE title LIKE %$var%;
我希望这两个都在一个查询中,并将找到的结果输出到 2 列中,如果其中任何一个都有结果。我也想在最后使用 LIMIT 。
因此,例如,如果两个表都有一个与标题匹配的项目,那么它将返回类似的内容。请注意,这些值将是它在每个表中匹配的任何值。关键是要在 2 列中,而不是像 Unions 输出那样。
+-----------------+
| prd_id | lst_id |
+-----------------+
| value | value |
+-----------------+
我接近了,但不能完全做到。
为了清楚起见,PHP print_r 输出应该是这样的。这个例子是如果列表中只有2个项目匹配
Array ( [0] => Array ( [lst_id] => 100007 ) [1] => Array ( [lst_id] => 100008 ))
这个例子是如果每个表中的 1 项匹配
Array ( [0] => Array ( [prd_id] => 100006 ) [1] => Array ( [lst_id] => 100008 ))
任何一个表中都可以有任意数量的匹配项。
【问题讨论】:
-
这不是
title上的简单全外连接吗? -
嗯,这是一个例子。它是我正在处理的搜索查询的一部分,在 WHERE 之后可能有许多条件,包括匹配每个表中的其他字段。我只是想以此作为我想要完成的事情的例子。
-
您的查询产生的行数是否相同?
-
不一定,无论它在表中找到什么,它都会返回。一个表中可能有 10 行匹配,另一个表中匹配 2 行。只取决于查询是否找到任何东西。问题是我需要它为每个表使用特定的 ID 列,这样我就可以使用 PHP 对其进行处理,因此它们不能在同一列中,因为它将为返回的所有值显示相同的键.
-
那么如果一个表返回 10 行,另一个表返回 2 行,你希望看到返回 12 行还是 10 行?
标签: php sql postgresql