Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用大小写时,操作数应包含1列sql_Php_Sql - Fatal编程技术网

Php 使用大小写时,操作数应包含1列sql

Php 使用大小写时,操作数应包含1列sql,php,sql,Php,Sql,当我尝试运行此查询时,它会显示错误为“操作数应包含1列”。请帮助我。当我使用CASE时,当o.ship\u address=0,则(a.entry\u street\u address),则查询会将街道地址带给我,但我还需要地址中的状态。Thanx prevenly您的CASE语句构造错误。像这样使用它: SELECT o.rfq_id, s.name, m.manufacturers_name, o.ship_address, o.serial, o.model, d.part_type,

当我尝试运行此查询时,它会显示错误为“操作数应包含1列”。请帮助我。当我使用CASE时,当o.ship\u address=0,则(a.entry\u street\u address),则查询会将街道地址带给我,但我还需要地址中的状态。Thanx prevenly

您的CASE语句构造错误。像这样使用它:

SELECT o.rfq_id, s.name, m.manufacturers_name, o.ship_address, o.serial, o.model, d.part_type,        d.description, d.part_number, d.subs, d.qty, o.notes, d.action, d.vendor, d.pt, d.price2, d.buy, d.notes1, o.tracking_number, o.date_shipped, o.expected_date, o.po_no, o.issue_no, o.date_added, 
       CONCAT_WS(' ', c.customers_lastname, c.customers_firstname) AS customer_name,
       c.customers_email_address,
       CASE
           WHEN o.ship_address = 0 THEN (a.entry_street_address,
                                         a.entry_state)
           WHEN o.ship_address = 1 THEN (p.street_address,
                                         p.state)
       END AS Address
FROM rfq_order o
JOIN rfq_order_detail d ON o.rfq_id = d.rfq_id
JOIN customers c ON o.customer_id = c.customers_id
JOIN address_book a ON c.customers_id = a.customers_id
JOIN manufacturers e ON o.manufacturer = e.manufacturers_id
JOIN manufacturers m ON o.manufacturer = m.manufacturers_id
JOIN rfq_order_status s ON o.status = s.id
LEFT JOIN shipping_address p ON o.rfq_id = p.rfq_id
或:


您也不能将多个列放在那里,它是一列。如果确实需要更多的列,则必须将它们串联起来,或者复制case语句。

或者使用两个
concat
列,或者使用两个
case
语句

 CASE WHEN cond THEN exp1
     WHEN cond2 THEN exp2
     ELSE exp3 END


当o.ship\u address=0时,那么a.entry\u street\u address ELSE p.street\u address当o.ship\u address=0时,那么a.entry\u state ELSE p.state END AS address我应该这样做吗?Thanx很多。我使用两个案例时是错的。现在可以工作了。如果我使用你的或部分bcoj,我希望街道与州分开,这会给我错误。第一个是工作第二种方法有两种情况,当您为每个操作数输入(a.entry\u street\u address)时有效,否则将导致SQL错误
 CASE WHEN cond THEN exp1
     WHEN cond2 THEN exp2
     ELSE exp3 END
SELECT  ...
       CASE
           WHEN o.ship_address = 0 THEN concat(a.entry_street_address,
                                         a.entry_state)
           WHEN o.ship_address = 1 THEN concat(p.street_address,
                                         p.state)
       END AS Address
SELECT  ...
       CASE
           WHEN o.ship_address = 0 THEN a.entry_street_address
           WHEN o.ship_address = 1 THEN p.street_address
       END AS StreetAddress,
       CASE
           WHEN o.ship_address = 0 THEN a.entry_state
           WHEN o.ship_address = 1 THEN p.state
       END AS State,