如果有人可以提供帮助,将不胜感激。
问题是我似乎无法引用子查询之外的任何内容!?
SELECT * FROM currentcalls AS c
LEFT JOIN custprices ON c.rateid = custprices.rateid
LEFT JOIN (SELECT * FROM costprices
WHERE costprices.ratetype = custprices.ratetype
AND (costprices.providerid = c.providerid OR costprices.providerid=0)
ORDER BY costprices.providerid DESC LIMIT 1) AS new1 ON new1.ratetype = custprices.ratetype
3 表:
currentcalls (rateid, providerid)
custprices (rateid, ratetype)
costprices (ratetype,providerid)
我们想要来自 currentcalls 的所有行,以及来自 cust 和 cost 价格的单行。rateid 有一个唯一的行,所以 custprices 很好。
不幸的是,特定providerid 的costprice 可能不存在(在这种情况下我想使用providerid=0),或者如果它确实存在,那么我不想要providerid=0 结果。无论哪种方式,我都不希望返回多行(来自 costprice)。
SAMPLE DATA(pricing_information 代表我要选择的多个字段)
currentcalls (rateid, providerid)
345 2
custprices (rateid, ratetype)
345 123
costprices (ratetype,providerid, pricing_information)
123 0 ????A
123 1 ????B
123 2 ????C
123 3 ????D
我希望结果是:
rateid,providerid,rateid,ratetype,ratetype,providerid,pricing_information
345 2 345 123 123 2 ??????C
如果 providerid 不存在,那么结果应该是
345 2 345 123 123 0 ??????A
(对于当前调用表中的每一行,应该只有 1 个 custprices 实例,这很容易,因为 ID 是唯一的,但问题是只获得了 1 个定价信息实例,与 providerid 和 ratetype 相关)