gpt4 book ai didi

php - 如何在 Laravel 5 的连接查询中获取最大 ID(违反完整性约束 :)

转载 作者:行者123 更新时间:2023-11-29 03:26:27 24 4
gpt4 key购买 nike

我的查询是这样的:

$deals=DB::table('leadsheet')
->join('Deal', 'leadsheet.leadcode', '=', 'Deal.leadcode')
->join('benefits', 'leadsheet.leadcode', '=', 'benefits.leadcode')
->join('delegatedealinfo', 'leadsheet.leadcode', '=', 'delegatedealinfo.leadcode')
->join('vipbooking', 'leadsheet.leadcode', '=', 'vipbooking.leadcode')
->where('id', DB::raw("(select max(`id`) from vipbooking)"))
->where('leadsheet.leadcat', '=','Delegates')

->get();

所以我有以下表格:

1.leadsheet 
-- leadcode
-- leadcat
2.Deal
-- leadcode
3.benefits
-- leadcode
4.delegatedealinfo
-- leadcode
5.vipbooking
-- leadcode

我想做的是获取 vipbooking 表单的所有最大 ID,其中 leadcode 与所有 leadcode FROM leadsheet WHERE leadsheet.leadcat=代表

我唯一的问题是 vipbooking 表单的 MAX ID 不工作

谁能帮帮我

更新1

应用@anant提供的解决方案后

错误

SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous (SQL: select * from `leadsheet` inner join `Deal` on `leadsheet`.`leadcode` = `Deal`.`leadcode` inner join `benefits` on `leadsheet`.`leadcode` = `benefits`.`leadcode` inner join `delegatedealinfo` on `leadsheet`.`leadcode` = `delegatedealinfo`.`leadcode` inner join `vipbooking` on `leadsheet`.`leadcode` = `vipbooking`.`leadcode` where `id` = (select MAX(id) AS vipid from vipbooking) and `leadsheet`.`leadcat` = Delegates)

改写问题

我想获取代表用户交易的vipbooking表单的详细信息,我们可以从Leadsheet表中找到交易是供应商还是代表

铅表

id | leadcode | leadcat

1 | DL2016012| Delegates
2 | DL2016013| Delegates
3 | VL2016001| Vendors
4 | VL2016002| Vendors

优惠

id | leadcode | DealAmount

1 | DL2016012| 123
2 | VL2016002| 1000
2 | DL2016013| 1200

贵宾预订

    id | leadcode | date      | bookingtxt

1 | DL2016012| 20-04-2016| xxx
2 | DL2016012| 20-04-2016| dddd
3 | VL2016012| 21-04-2016| ppp
4 | DL2016013| 20-04-2016| xxx
5 | DL2016013| 22-04-2016| dddd

所以我的输出应该有

 2 123 | Delegates| DL2016012| 20-04-2016| dddd
5 1200| Delegates| DL2016013| 22-04-2016| dddd

谢谢

最佳答案

您可以尝试使用这两个查询。

$vipBookingMaxId = DB::table('vipbooking')
->select(DB::raw("MAX(`id`) AS maxId"))
->get();
$maxId = (null != $vipBookingMaxId) ? $vipBookingMaxId->maxId : 0;
$dealsQuery = DB::table('leadsheet')
->join('Deal', 'leadsheet.leadcode', '=', 'Deal.leadcode')
->join('benefits', 'leadsheet.leadcode', '=', 'benefits.leadcode')
->join('delegatedealinfo', 'leadsheet.leadcode', '=', 'delegatedealinfo.leadcode')
->join('vipbooking', 'leadsheet.leadcode', '=', 'vipbooking.leadcode');

if ($maxId) {
$dealsQuery->where('id', $vipBookingMaxId->maxId);
}

$deals = $dealsQuery->where('leadsheet.leadcat', '=', 'Delegates')->get();

希望对您有所帮助。

关于php - 如何在 Laravel 5 的连接查询中获取最大 ID(违反完整性约束 :),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35474941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com