这个问题不是要讨论数据库的设置是否应该如此,我对它的实际情况不满意,但它是如何实现的,并且DBA不会在重构时完成重构。这一刻。
我正在寻找的是一种加入表的方法,我之前并不知道表名,但是我想在表中进行联接。
所以:
TABEL transactions trans_id autherizer 001Bar payment_provider_a 001Foo payment_provider_b
TABLE payment_provider_a trans_id amount 001Bar 50
TABLE payment_provider_b trans_id amount 001Foo 50
表名是虚构的,但设置完全相同。有一个transaction
表,它存储transaction_id
和payment_provider
字符串名称(包含许多其他数据,与问题无关)。
无论如何都要从transaction
表中获取所有数据并在该查询中直接在payment_provider表上执行join
,我们现在只能从transaction
获取该表。 {1}}表。
我也用PHP标记了它,因为我想用PDO
拨打电话。整个PHP片段不是必需的,但如果你坚持;)。为自己的查询推进正确的方向就足够了。我知道我缺乏我尝试过的例子。但说实话,我没有尝试那么多,因为我无法真正想到某些东西,这是我第一次遇到这种查询的需要。
答案 0 :(得分:2)
不太干净,但你可以试试这个:
SELECT * FROM transactions t JOIN
(
SELECT 'payment_provider_a' AS name,* FROM payment_provider_a
UNION
SELECT 'payment_provider_b' AS name,* FROM payment_provider_b
) p ON t.payment_provider = p.name AND t.trans_id=p.trans_id
请注意,所有payment_provider_x
表必须具有相同的列数和类型。否则,您只需要选择实际上常见的字段(如果需要,可以采用这种方法)。