Mysql 具有相同表的leftJoin返回的记录比预期的多(查询生成器)
我创建了一个查询来获取数据以返回到视图 查询应返回8条记录,但应返回10条记录。一个订单被错误地复制了3次 我可以发现以下2个使用相同表的leftJoin导致了此错误: LefJoin:Mysql 具有相同表的leftJoin返回的记录比预期的多(查询生成器),mysql,query-builder,laravel-query-builder,Mysql,Query Builder,Laravel Query Builder,我创建了一个查询来获取数据以返回到视图 查询应返回8条记录,但应返回10条记录。一个订单被错误地复制了3次 我可以发现以下2个使用相同表的leftJoin导致了此错误: LefJoin: ->leftJoin('users_r3_details AS users_1', 'orders_detail_new.userID', '=', 'users_1.userID') ->leftJoin('users_r3_details AS users_2', 'orders_detail_
->leftJoin('users_r3_details AS users_1', 'orders_detail_new.userID', '=', 'users_1.userID')
->leftJoin('users_r3_details AS users_2', 'orders_detail_new.customerID', '=', 'users_2.userID')
'users_1.firstname AS FirstnameUser',
'users_1.lastname AS LastnameUser',
'users_2.firstname AS FirstnameCustomer',
'users_2.lastname AS LastnameCustomer',
# SQL : GET THE ORDER DATA
$orders = DB::table('orders_detail_new')
->leftJoin('status_order','orders_detail_new.statusorderID', '=', 'status_order.id')
->leftJoin('users_r3_details AS users_1', 'orders_detail_new.userID', '=', 'users_1.userID')
->leftJoin('users_r3_details AS users_2', 'orders_detail_new.customerID', '=', 'users_2.userID')
->leftJoin('dessert_servings','orders_detail_new.dessertservingID', '=', 'dessert_servings.id')
->leftJoin('product_types','orders_detail_new.producttype_ID', '=', 'product_types.producttypeID')
->leftJoin('product_names','orders_detail_new.productname_ID', '=', 'product_names.productname_ID')
->leftJoin('party_loaf_portions','orders_detail_new.ID_portion', '=', 'party_loaf_portions.portion_ID')
->leftJoin('party_loaf_weights','orders_detail_new.partyloafweightID', '=', 'party_loaf_weights.id')
->leftJoin('party_loaf_sandwiches_1','orders_detail_new.partyloafsandwich1ID', '=', 'party_loaf_sandwiches_1.id')
->leftJoin('party_loaf_sandwiches_2','orders_detail_new.partyloafsandwich2ID', '=', 'party_loaf_sandwiches_2.id')
->leftJoin('party_loaf_sandwiches_3','orders_detail_new.partyloafsandwich3ID', '=', 'party_loaf_sandwiches_3.id')
->leftJoin('party_loaf_sandwiches_4','orders_detail_new.partyloafsandwich4ID', '=', 'party_loaf_sandwiches_4.id')
->leftJoin('party_loaf_ribbons','orders_detail_new.partyloafribbonID', '=', 'party_loaf_ribbons.id')
->leftJoin('savoury_canapes','orders_detail_new.canapeID', '=', 'savoury_canapes.id')
->leftJoin('savoury_mini_puffs','orders_detail_new.minipuffID', '=', 'savoury_mini_puffs.id')
->leftJoin('savoury_mini_vols_au_vent','orders_detail_new.minivolsauventID', '=', 'savoury_mini_vols_au_vent.id')
->leftJoin('savoury_little_appetisers','orders_detail_new.littleappetiserID', '=', 'savoury_little_appetisers.id')
->leftJoin('sweet_sweets','orders_detail_new.sweetID', '=', 'sweet_sweets.id')
->select(
'orders_detail_new.userID AS userID',
'orders_detail_new.customerID AS customerID',
'orders_detail_new.id AS rowID',
'orders_detail_new.orderID AS orderID',
'users_1.firstname AS FirstnameUser',
'users_1.lastname AS LastnameUser',
'users_2.firstname AS FirstnameCustomer',
'users_2.lastname AS LastnameCustomer',
'orders_detail_new.laboratory AS Laboratory',
'orders_detail_new.ownerID AS ownerID',
'orders_detail_new.statusorderID AS StatusID',
'status_order.status_order AS Status',
'orders_detail_new.deliverydate AS DeliveryDate',
'product_types.product_type AS Type',
'product_names.product_name AS Name',
'dessert_servings.serving_persons AS Servings',
'orders_detail_new.desserttextmessage AS Message',
'orders_detail_new.dessertdecorchocolateID AS DecoChocoFruits',
'orders_detail_new.dessertdecorflowerID AS DecoSmallFlowers',
'orders_detail_new.piedecoration AS Decoration',
'party_loaf_portions.portions AS Portions',
'party_loaf_weights.weight AS Weight',
'party_loaf_sandwiches_1.assortment AS Assortment1',
'party_loaf_sandwiches_2.assortment AS Assortment2',
'party_loaf_sandwiches_3.assortment AS Assortment3',
'party_loaf_sandwiches_4.assortment AS Assortment4',
'party_loaf_ribbons.color AS RibbonColor',
'slicescutID AS Cut',
'bread_quantity AS BreadQuantity',
'savoury_canapes.assortment AS CanapésAssortment',
'savoury_mini_puffs.assortment AS MiniPuffsAssortment',
'savoury_mini_vols_au_vent.assortment AS VolsAuVentAssortment',
'savoury_little_appetisers.assortment AS AppetisersAssortment',
'sweet_sweets.assortment AS SweetAssortment',
'orders_detail_new.sweet_quantity AS SweetQuantity',
'orders_detail_new.savoury_quantity AS SavouryQuantity',
'orders_detail_new.productprice AS Price',
'orders_detail_new.productaddfee AS Surcharge',
'orders_detail_new.piedecorationprice AS DecoSurcharge',
'orders_detail_new.subtotal AS Total'
)
### ->orderby('orders_detail_new.id', '=', 'asc')
->where('orders_detail_new.producttype_ID', '=', 4) // FOR test PURPOSE
->where('orders_detail_new.productname', '=', 26) // FOR test PURPOSE
### ->take(5) // FOR test PURPOSE
->get();
dd($orders);
列:
->leftJoin('users_r3_details AS users_1', 'orders_detail_new.userID', '=', 'users_1.userID')
->leftJoin('users_r3_details AS users_2', 'orders_detail_new.customerID', '=', 'users_2.userID')
'users_1.firstname AS FirstnameUser',
'users_1.lastname AS LastnameUser',
'users_2.firstname AS FirstnameCustomer',
'users_2.lastname AS LastnameCustomer',
# SQL : GET THE ORDER DATA
$orders = DB::table('orders_detail_new')
->leftJoin('status_order','orders_detail_new.statusorderID', '=', 'status_order.id')
->leftJoin('users_r3_details AS users_1', 'orders_detail_new.userID', '=', 'users_1.userID')
->leftJoin('users_r3_details AS users_2', 'orders_detail_new.customerID', '=', 'users_2.userID')
->leftJoin('dessert_servings','orders_detail_new.dessertservingID', '=', 'dessert_servings.id')
->leftJoin('product_types','orders_detail_new.producttype_ID', '=', 'product_types.producttypeID')
->leftJoin('product_names','orders_detail_new.productname_ID', '=', 'product_names.productname_ID')
->leftJoin('party_loaf_portions','orders_detail_new.ID_portion', '=', 'party_loaf_portions.portion_ID')
->leftJoin('party_loaf_weights','orders_detail_new.partyloafweightID', '=', 'party_loaf_weights.id')
->leftJoin('party_loaf_sandwiches_1','orders_detail_new.partyloafsandwich1ID', '=', 'party_loaf_sandwiches_1.id')
->leftJoin('party_loaf_sandwiches_2','orders_detail_new.partyloafsandwich2ID', '=', 'party_loaf_sandwiches_2.id')
->leftJoin('party_loaf_sandwiches_3','orders_detail_new.partyloafsandwich3ID', '=', 'party_loaf_sandwiches_3.id')
->leftJoin('party_loaf_sandwiches_4','orders_detail_new.partyloafsandwich4ID', '=', 'party_loaf_sandwiches_4.id')
->leftJoin('party_loaf_ribbons','orders_detail_new.partyloafribbonID', '=', 'party_loaf_ribbons.id')
->leftJoin('savoury_canapes','orders_detail_new.canapeID', '=', 'savoury_canapes.id')
->leftJoin('savoury_mini_puffs','orders_detail_new.minipuffID', '=', 'savoury_mini_puffs.id')
->leftJoin('savoury_mini_vols_au_vent','orders_detail_new.minivolsauventID', '=', 'savoury_mini_vols_au_vent.id')
->leftJoin('savoury_little_appetisers','orders_detail_new.littleappetiserID', '=', 'savoury_little_appetisers.id')
->leftJoin('sweet_sweets','orders_detail_new.sweetID', '=', 'sweet_sweets.id')
->select(
'orders_detail_new.userID AS userID',
'orders_detail_new.customerID AS customerID',
'orders_detail_new.id AS rowID',
'orders_detail_new.orderID AS orderID',
'users_1.firstname AS FirstnameUser',
'users_1.lastname AS LastnameUser',
'users_2.firstname AS FirstnameCustomer',
'users_2.lastname AS LastnameCustomer',
'orders_detail_new.laboratory AS Laboratory',
'orders_detail_new.ownerID AS ownerID',
'orders_detail_new.statusorderID AS StatusID',
'status_order.status_order AS Status',
'orders_detail_new.deliverydate AS DeliveryDate',
'product_types.product_type AS Type',
'product_names.product_name AS Name',
'dessert_servings.serving_persons AS Servings',
'orders_detail_new.desserttextmessage AS Message',
'orders_detail_new.dessertdecorchocolateID AS DecoChocoFruits',
'orders_detail_new.dessertdecorflowerID AS DecoSmallFlowers',
'orders_detail_new.piedecoration AS Decoration',
'party_loaf_portions.portions AS Portions',
'party_loaf_weights.weight AS Weight',
'party_loaf_sandwiches_1.assortment AS Assortment1',
'party_loaf_sandwiches_2.assortment AS Assortment2',
'party_loaf_sandwiches_3.assortment AS Assortment3',
'party_loaf_sandwiches_4.assortment AS Assortment4',
'party_loaf_ribbons.color AS RibbonColor',
'slicescutID AS Cut',
'bread_quantity AS BreadQuantity',
'savoury_canapes.assortment AS CanapésAssortment',
'savoury_mini_puffs.assortment AS MiniPuffsAssortment',
'savoury_mini_vols_au_vent.assortment AS VolsAuVentAssortment',
'savoury_little_appetisers.assortment AS AppetisersAssortment',
'sweet_sweets.assortment AS SweetAssortment',
'orders_detail_new.sweet_quantity AS SweetQuantity',
'orders_detail_new.savoury_quantity AS SavouryQuantity',
'orders_detail_new.productprice AS Price',
'orders_detail_new.productaddfee AS Surcharge',
'orders_detail_new.piedecorationprice AS DecoSurcharge',
'orders_detail_new.subtotal AS Total'
)
### ->orderby('orders_detail_new.id', '=', 'asc')
->where('orders_detail_new.producttype_ID', '=', 4) // FOR test PURPOSE
->where('orders_detail_new.productname', '=', 26) // FOR test PURPOSE
### ->take(5) // FOR test PURPOSE
->get();
dd($orders);
我无法修复它,因此我将感谢您的专业知识
谢谢
查询:
->leftJoin('users_r3_details AS users_1', 'orders_detail_new.userID', '=', 'users_1.userID')
->leftJoin('users_r3_details AS users_2', 'orders_detail_new.customerID', '=', 'users_2.userID')
'users_1.firstname AS FirstnameUser',
'users_1.lastname AS LastnameUser',
'users_2.firstname AS FirstnameCustomer',
'users_2.lastname AS LastnameCustomer',
# SQL : GET THE ORDER DATA
$orders = DB::table('orders_detail_new')
->leftJoin('status_order','orders_detail_new.statusorderID', '=', 'status_order.id')
->leftJoin('users_r3_details AS users_1', 'orders_detail_new.userID', '=', 'users_1.userID')
->leftJoin('users_r3_details AS users_2', 'orders_detail_new.customerID', '=', 'users_2.userID')
->leftJoin('dessert_servings','orders_detail_new.dessertservingID', '=', 'dessert_servings.id')
->leftJoin('product_types','orders_detail_new.producttype_ID', '=', 'product_types.producttypeID')
->leftJoin('product_names','orders_detail_new.productname_ID', '=', 'product_names.productname_ID')
->leftJoin('party_loaf_portions','orders_detail_new.ID_portion', '=', 'party_loaf_portions.portion_ID')
->leftJoin('party_loaf_weights','orders_detail_new.partyloafweightID', '=', 'party_loaf_weights.id')
->leftJoin('party_loaf_sandwiches_1','orders_detail_new.partyloafsandwich1ID', '=', 'party_loaf_sandwiches_1.id')
->leftJoin('party_loaf_sandwiches_2','orders_detail_new.partyloafsandwich2ID', '=', 'party_loaf_sandwiches_2.id')
->leftJoin('party_loaf_sandwiches_3','orders_detail_new.partyloafsandwich3ID', '=', 'party_loaf_sandwiches_3.id')
->leftJoin('party_loaf_sandwiches_4','orders_detail_new.partyloafsandwich4ID', '=', 'party_loaf_sandwiches_4.id')
->leftJoin('party_loaf_ribbons','orders_detail_new.partyloafribbonID', '=', 'party_loaf_ribbons.id')
->leftJoin('savoury_canapes','orders_detail_new.canapeID', '=', 'savoury_canapes.id')
->leftJoin('savoury_mini_puffs','orders_detail_new.minipuffID', '=', 'savoury_mini_puffs.id')
->leftJoin('savoury_mini_vols_au_vent','orders_detail_new.minivolsauventID', '=', 'savoury_mini_vols_au_vent.id')
->leftJoin('savoury_little_appetisers','orders_detail_new.littleappetiserID', '=', 'savoury_little_appetisers.id')
->leftJoin('sweet_sweets','orders_detail_new.sweetID', '=', 'sweet_sweets.id')
->select(
'orders_detail_new.userID AS userID',
'orders_detail_new.customerID AS customerID',
'orders_detail_new.id AS rowID',
'orders_detail_new.orderID AS orderID',
'users_1.firstname AS FirstnameUser',
'users_1.lastname AS LastnameUser',
'users_2.firstname AS FirstnameCustomer',
'users_2.lastname AS LastnameCustomer',
'orders_detail_new.laboratory AS Laboratory',
'orders_detail_new.ownerID AS ownerID',
'orders_detail_new.statusorderID AS StatusID',
'status_order.status_order AS Status',
'orders_detail_new.deliverydate AS DeliveryDate',
'product_types.product_type AS Type',
'product_names.product_name AS Name',
'dessert_servings.serving_persons AS Servings',
'orders_detail_new.desserttextmessage AS Message',
'orders_detail_new.dessertdecorchocolateID AS DecoChocoFruits',
'orders_detail_new.dessertdecorflowerID AS DecoSmallFlowers',
'orders_detail_new.piedecoration AS Decoration',
'party_loaf_portions.portions AS Portions',
'party_loaf_weights.weight AS Weight',
'party_loaf_sandwiches_1.assortment AS Assortment1',
'party_loaf_sandwiches_2.assortment AS Assortment2',
'party_loaf_sandwiches_3.assortment AS Assortment3',
'party_loaf_sandwiches_4.assortment AS Assortment4',
'party_loaf_ribbons.color AS RibbonColor',
'slicescutID AS Cut',
'bread_quantity AS BreadQuantity',
'savoury_canapes.assortment AS CanapésAssortment',
'savoury_mini_puffs.assortment AS MiniPuffsAssortment',
'savoury_mini_vols_au_vent.assortment AS VolsAuVentAssortment',
'savoury_little_appetisers.assortment AS AppetisersAssortment',
'sweet_sweets.assortment AS SweetAssortment',
'orders_detail_new.sweet_quantity AS SweetQuantity',
'orders_detail_new.savoury_quantity AS SavouryQuantity',
'orders_detail_new.productprice AS Price',
'orders_detail_new.productaddfee AS Surcharge',
'orders_detail_new.piedecorationprice AS DecoSurcharge',
'orders_detail_new.subtotal AS Total'
)
### ->orderby('orders_detail_new.id', '=', 'asc')
->where('orders_detail_new.producttype_ID', '=', 4) // FOR test PURPOSE
->where('orders_detail_new.productname', '=', 26) // FOR test PURPOSE
### ->take(5) // FOR test PURPOSE
->get();
dd($orders);
dd(订单)
我怀疑有相同的用户具有相同的customerId。尝试添加这些
->where('orders_detail_new.customerID', '!=', 'users_1.userID')
->where('orders_detail_new.userID', '!=', 'users_2.userID')
或
或
最后选择
->leftJoin('sweet_sweets','orders_detail_new.sweetID', '=', 'sweet_sweets.id')
->distinct()
->select(
来自@metal的溶液
在查询中添加distinct:
...
->distinct()
->get();
感谢您的建议,但是现在不再需要从
orders\u detail\u new
中返回8条记录(在MYSQL中测试,没有所有剩余的连接选择计数(id
),其中producttype\u id
=4和productname\u id
=26),只返回3条记录…尝试删除第二条记录。相同的输出,3条记录返回似乎是一个数据问题,我们的最后一个选项是选择distinct()good,如果您能够找出哪个表提供了重复项,那就更好了。请不要忘记接受这个答案