mariadb 选择查询返回重复结果

i34xakig  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(153)

当我执行此查询时:

SELECT
    order_id,
    thread_id,
    color_select
FROM
    order_threads
WHERE
    order_id = 42

我得到这样一个结果:
| 订单标识|线程标识|颜色_选择|
| - -|- -|- -|
| 四十二|一个|深灰色|
| 四十二|一个|灰白色|
| 四十二|七个|灰白色|
| 四十二|三个|深灰色|
我需要从其他表中获取更多数据,因此我重写了查询:

SELECT
    order_threads.thread_id,
    order_threads.order_id,
    order_threads.color_select,
    thread.name,
    patron.id,
    patron.order_id,
    patron_colors.color_name AS color_name,
    patron_colors.id,
    patron_colors.color_count
FROM
    order_threads
JOIN 
    thread ON order_threads.thread_id = thread.id
JOIN 
    patron ON patron.order_id = order_threads.order_id
JOIN 
    patron_colors ON patron_colors.patron_id = patron.id
WHERE
    order_threads.order_id = '42'

结果如下所示:
| 线程标识|订单标识|颜色_选择|姓名|标识符|订单标识|颜色名称|标识符|颜色计数|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|
| 一个|四十二|深灰色|蓝线|五十一个|四十二|深灰色|七十四人|2个|
| 一个|四十二|深灰色|蓝线|五十一个|四十二|灰白色|七十五人|2个|
| 一个|四十二|灰白色|蓝线|五十一个|四十二|深灰色|七十四人|2个|
| 一个|四十二|灰白色|蓝线|五十一个|四十二|灰白色|七十五人|2个|
| 七个|四十二|灰白色|绿线|五十一个|四十二|深灰色|七十四人|2个|
| 七个|四十二|灰白色|绿线|五十一个|四十二|灰白色|七十五人|2个|
| 三个|四十二|深灰色|白色螺纹|五十一个|四十二|深灰色|七十四人|2个|
| 三个|四十二|深灰色|白色螺纹|五十一个|四十二|灰白色|七十五人|2个|
它应该是这样的:
| 线程标识|订单标识|颜色_选择|姓名|标识符|订单标识|颜色名称|标识符|颜色计数|
| - -|- -|- -|- -|- -|- -|- -|- -|- -|
| 一个|四十二|深灰色|蓝线|五十一个|四十二|深灰色|七十四人|2个|
| 一个|四十二|灰白色|蓝线|五十一个|四十二|深灰色|七十四人|2个|
| 七个|四十二|灰白色|绿线|五十一个|四十二|灰白色|七十五人|2个|
| 三个|四十二|深灰色|白色螺纹|五十一个|四十二|深灰色|七十四人|2个|
我的错误是什么?

pgccezyw

pgccezyw1#

您的查询没有错误,问题是有些顾客有多种颜色可用,因此您必须在查询中指定只希望选择顾客的颜色与订单颜色匹配的行。
替换
“WHERE订单线程.订单标识= '42'"与
“WHERE订单线程.订单标识= '42' AND订单线程.颜色选择=顾客颜色.颜色名称”

相关问题