【问题标题】:Rewriting a query - tricky JOIN task重写查询 - 棘手的 JOIN 任务
【发布时间】:2014-02-12 09:06:53
【问题描述】:

这是我的旧 SQL:

SELECT so.samplelist_id
   FROM sales_flat_order sfo
   JOIN sales_flat_order_address sfoa
     ON sfo.entity_id = sfoa.parent_id
   JOIN samplelist_order AS so
     ON Concat(Lower(Trim(sfoa.postcode)), Lower(Trim(sfoa.lastname))) =
        Concat(Lower(Trim(so.postcode)), Lower(Trim(so.lastname))) 

如您所见,它比较来自2 tablessales_flat_order_addresssamplelist_order 的字符串(我知道性能很差)。这样可行。我现在的任务是重写该查询,使其不再使用samplelist_order,而是使用sales_flat_order_adress

问题是,一张表(sales_flat_order_address)应该如何与自己比较数据?这有可能吗?有什么诀窍吗?

谢谢!

【问题讨论】:

  • 你能分享你的查询解释结果吗?
  • 目前尚不清楚您希望以何种方式将此表与其自身进行比较.. 尽管这样做当然是完全可能的。您要寻找的结果是什么?
  • 你想要的输出结果是什么?
  • 伙计们,阅读代码 - 他正在加入 sales_flat_order_address 和 samplelist_order on post_code & last_name concat
  • @jmadsen,是的,很清楚他目前在做什么,但我看不出他对新查询的期望结果是什么。显然你不能在同样的条件下进行自我加入。

标签: mysql join


【解决方案1】:

最好的答案 - 恕我直言 - 编写一个脚本来建立一个正常的 fk 关系并在你的应用程序中运行它。

如果您不能这样做,请在每个字段上创建一个额外的字段,其中包含连接的字段和索引

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 2013-08-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-04
    • 1970-01-01
    相关资源
    最近更新 更多