我在重写此查询以使用连接而不是两个子查询时遇到了一些麻烦。如果你明白我的意思,我在理清它时遇到了问题。
SELECT o.order_id, n.title, c.first_name, t1.name, o.product_id,
(SELECT ttd2.tid FROM term_data ttd2, term_node ttn2 WHERE ttd2.vid = 5 AND ttn2.nid = p.nid AND ttd2.tid=ttn2.tid) AS tid,
(SELECT ttd4.name FROM term_data ttd4, term_node ttn4 WHERE ttd4.vid = 8 AND ttn4.nid = p.nid AND ttd4.tid=ttn4.tid) AS month
FROM orders o, products p, node n, customers c, term_data t1, term_node t2
WHERE o.product_id = p.nid
AND p.nid = n.nid
AND o.customer_email = c.customer_email
AND t2.tid = t1.tid
AND t1.vid = 6
AND n.nid = t2.nid
你能帮忙吗?或者给一些线索/提示。
最佳答案
使用 ANSI SQL-92 重写它语法(即使用 JOIN 和 ON 子句),它应该更加清晰。
现在所有的 JOIN
和 WHERE
子句混合在一起,因此不容易看出它们之间的关系。子查询不一定是问题;清理语法后,这应该会变得更加清楚。
关于sql - 将 SQL 重写为 JOINS 而不是子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4144645/