我需要一些帮助:(
我的描述可能看起来很奇怪,下面的示例图片:)
为了生成图表,我想根据表单生成的查询选择“天”(在此阶段,查询将仅包含“来自”和“到”国家/地区)。
我的问题是我不知道如何选择使用条件逻辑,因此它从每个具有匹配“来自”和“到”的“item_id”中选择“天”。
(另一个问题是我不知道任何好的关键字或实际上如何调用它,所以请原谅我,我只是做了一些盲目的谷歌搜索并试图在这里找到类似的问题)
SELECT days.meta_value
FROM tableName AS from_country,
tableName AS to_country,
tableName AS days
WHERE from_country.item_id = to_country.item_id
AND from_country.item_id = days.item_id
AND from_country.field_id = 90
AND to_country.field_id = 93
AND days.field_id = 251
如果您想按from_country.meta_value
或类似过滤条件,您可以添加更多限制。你应该tableName
用表的实际名称替换。
将和视为指向表中行from_country
的三个不同指针,或者从关系中获取值的不同变量。您希望它们三个都描述同一个项目,并且还希望它们每个都引用与其名称关联的字段。这导致了上述条件。to_country
days
您甚至可以创建一个视图,以便像正确设计的那样访问这个设计不佳的表:
CREATE VIEW viewName AS
SELECT item.item_id AS item_id,
from_country.meta_value AS from_country,
to_country.meta_value AS to_country,
days.meta_value AS days
FROM (SELECT DISTINCT item_id FROM tableName) AS item
LEFT JOIN tableName AS from_country
ON (from_country.item_id = item.item_id AND
from_country.field_id = 90)
LEFT JOIN tableName AS to_country
ON (to_country.item_id = item.item_id AND
to_country.field_id = 93)
LEFT JOIN tableName AS days
ON (days.item_id = item.item_id AND
days.field_id = 251)
这将创建一个包含四列的视图,您可以从中简单地选择:
SELECT days FROM viewName WHERE from_country LIKE 'A%'
或任何你想选择的。请注意,由于左连接,某些项目的缺失值将导致NULL
值。这与上面的查询形成对比,上面的查询将省略任何没有指定所有三个值的项目。使用更适合您的情况的任何东西。