【问题标题】:Where my database query is wrong?我的数据库查询哪里出错了?
【发布时间】:2023-03-11 03:00:01
【问题描述】:

我有一个数据库查询

       $extras = DB::select(

        'SELECT p.*
        FROM products p 
        WHERE required_product IS NULL 
        UNION ALL
SELECT p.* 
FROM products p, orders o 
WHERE p.required_product = o.product_id 
AND o.user_id =' .  $user->id .  'UNION ALL
SELECT p.* , "onlyOnce" product_type
FROM products p, orders o, only_once on 
WHERE p.required_product = o.product_id
AND p.id = on.product_id 
AND p.id NOT IN (SELECT product_id FROM orders WHERE o.product_id = p.id and o.user_id ='.$user->id.')'
);

这是我的表格结构:

产品表:http://prntscr.com/k6jdv7

订单表:product_id,user_id

用户表:id,name,last_server,timestamps

【问题讨论】:

  • 返回的错误是什么?
  • 您不能合并具有不同列数或具有不同类型的列的表。您在最后一个选择中有p.* , "onlyOnce" product_type,但在前两个选择中只有p.*
  • .. 嗯,我不确定我知道要做什么。能否给出代码或示例

标签: php mysql laravel


【解决方案1】:

语法错误。

试试这个...

$extras = DB::select(

    'SELECT p.*
    FROM products p 
    WHERE required_product IS NULL 
    UNION ALL
SELECT p.* 
FROM products p, orders o 
WHERE p.required_product = o.product_id 
AND o.user_id =' .  $user->id .  ' UNION ALL
SELECT p.* , "onlyOnce" product_type
FROM products p, orders o, only_once 
WHERE p.required_product = o.product_id
AND p.id = on.product_id 
AND p.id NOT IN (SELECT product_id FROM orders WHERE o.product_id = p.id and o.user_id ='.$user->id.')'
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-17
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 2011-03-14
    相关资源
    最近更新 更多