从2个表中选择所有行,其中field =?

时间:2017-11-03 11:00:20

标签: php mysql

很简单,我需要一个MySQL语句,从2个不同的表where userId = 1中选择所有行。这是我的陈述,但它不起作用。它返回表1(左表)中的结果:

$transactionsQ = $db->query("select e.sender, e.amount, e.timestamp, s.sender, s.recipient, s.amount, s.timestamp from ethTransactions as e, sofTransactions as s where e.userId = ? or s.userId = ?", [$currentUser->id, $currentUser->id]);

table1(ethTransactions)就像:

|id|userId|sender|amount|timestamp|

table2(sofTransactions)就像:

|id|userId|sender|recipient|amount|timestamp|

关于ethTransactions的一些数据:

1|12|ajdoaidjoiwjdaq|0.03222|2017-11-08 03:09:11

关于sofTransactions的一些数据:

1|12|opiyptropyirpyi|dqwuebhdnwq|1.02223|2017-10-08 04:09:11

我想要返回的内容,因为两者都有相同的userId:

|id|userId|sender         |recipient  |amount |timestamp          |
|1 |12    |ajdoaidjoiwjdaq|           |0.03222|2017-11-08 03:09:11|
|1 |12    |opiyptropyirpyi|dqwuebhdnwq|1.02223|2017-10-08 04:09:11|

3 个答案:

答案 0 :(得分:2)

您应该使用LEFT JOIN来执行此操作。

VLOOKUP

答案 1 :(得分:0)

SELECT column_names(s) FROM table1 AS t1 **INNER JOIN** table2 AS t2
ON t1.userId = t2.userId WHERE t1.userId=1;

答案 2 :(得分:0)

数据库的结构有些奇怪。 userid上的JOIN看起来很自然,但是它可能会将一个表中的行与另一个表中具有不同发送者列的行连接起来。这意味着您要加入不属于一起的数据项。

我对你的问题的回答是:重新设计你的表结构,因为你要打破关系数据库的一个主要规则 - 最有可能的是,重复数据。