【发布时间】:2016-02-18 07:05:41
【问题描述】:
我的查询是这样的:
$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=Delegates 相同
我唯一的问题是MAX ID 的vipbooking 表单不起作用
谁能帮帮我
更新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
谢谢
【问题讨论】:
-
@Anant 你是 Laravel 开发者吗? ,我想要一个使用 RelationShip 方式向模型添加方法来解决这个问题的答案,它的执行速度更快,但我现在仍然要尝试这个。
-
@Anant 我遇到了一些错误我已经用错误更新了我的问题请看一下
-
@Anant yes id 在那里,我也尝试过添加反勾号,但它也不起作用
-
@Anant
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'id' in where clause is ambiguous (SQL: select * fromleadsheet` 内连接Dealonleadsheet.leadcode=Deal.leadcode内连接benefitsonleadsheet.@987654benefits.leadcode内连接delegatedealinfoleadsheet.leadcode=delegatedealinfo.leadcode内连接vipbookingleadsheet.leadcode.leadcode= @98764354@9876id= (select MAX(vipbooking.id) AS vipid from vipbooking) andleadsheet.leadcat= Delegates)` -
@Anant 是的,我试过了
标签: php mysql eloquent laravel-5.1 has-many