2012-01-11 81 views
0

那么我目前正在尝试在SQL中执行一个查询,但是我想在同一个查询中加入两个表。嗯,我在使用PHP验证码:在一个SQL查询中加入2个不同的表

SELECT * FROM table1, table1 
WHERE value1 LIKE '$q%' 
OR value2 LIKE '$q%' 
LIMIT 10 

Table 1和表2是不同的表,表1不具有值2列,表2不具有值1列。

我的想法是在PHP中检查行是否有特定的列(只有table1有),那么它将返回table1所具有的列的值。如果它检测到该行具有table2特定列,它将返回表2所具有的列的值。

甚至有一种方法可以做到这一点?

+0

这两张表之间有什么关系?此外,这种方法似乎很hacky。你试图解决的核心问题是什么?可能有更好的方法。 – JohnFx 2012-01-11 01:33:14

回答

3

由于这两个表是不相关的,唯一有意义的方式来获得在同一个查询结果是用UNION

SELECT * FROM table1 WHERE value1 LIKE '$q%' 
UNION SELECT * FROM table2 WHERE value2 LIKE '$q%' 

然而,这可能是你正在做的事情错了一个标志。

+0

确实。如果两个表在设计上是相同的,那么大多数情况下,只需简单地将它们结合起来就会更好。 – kba 2012-01-11 01:34:16

0

如果你不确定如何加入的作品,我建议你尝试做一个

SELECT * FROM table1, table2; 

,看看它甚至有意义申请自己的极限(WHERE),以该结果。