当我执行此查询时:
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个|
我的错误是什么?
1条答案
按热度按时间pgccezyw1#
您的查询没有错误,问题是有些顾客有多种颜色可用,因此您必须在查询中指定只希望选择顾客的颜色与订单颜色匹配的行。
替换
“WHERE订单线程.订单标识= '42'"与
“WHERE订单线程.订单标识= '42' AND订单线程.颜色选择=顾客颜色.颜色名称”