现在我正在使用三个查询来获取我需要的行:
来自pins
的主要信息:
SELECT * FROM pins
WHERE lat > 45
pins_tags
中的两列将引脚与一个或多个标记相关联:
SELECT pins_tags.pin_id, pins_tags.tag_id FROM pins_tags
INNER JOIN pins
ON pins_tags.pin_id = pins.id
WHERE pins.lat > 45
最后是关于与我刚刚选择的引脚相关的标签的信息:
SELECT tags.id, tags.caption FROM tags
INNER JOIN pins_tags
ON pins_tags.tag_id = tags.id
INNER JOIN pins
ON pins_tags.pin_id = pins.id
WHERE pins.lat > 45
您可以看到我必须在每个查询中使用相同的WHERE子句来获取与我在第一个查询中返回的引脚相关联的标记。这很好,并返回我想要的三个数组。但我觉得我没有看到更有效的方法来做到这一点。有吗?
答案 0 :(得分:0)
我的理解:选择所有tags
和相应的"详情"来自pins_tags
和pins
。您可以自己选择要提取的列。
SELECT
tags.*
pins_tags.*,
pins.*
FROM tags
LEFT JOIN pins_tags ON pins_tags.tag_id = tags.id
LEFT JOIN pins ON pins.id = pins_tags.pin_id
WHERE pins.lat > 45
注意:与标题比较的问题文本非常混乱。请再次自己阅读,但是从不知道你为什么使用3个语句的用户的角度来看(数组?! - 可能与你在PHP中应用的内容有什么关系?)以及究竟是什么你想实现: - )
祝你好运。