Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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
Mysql 1054-未知列';XXX和x27;在';关于第'条;_Mysql_Sql - Fatal编程技术网

Mysql 1054-未知列';XXX和x27;在';关于第'条;

Mysql 1054-未知列';XXX和x27;在';关于第'条;,mysql,sql,Mysql,Sql,下面的SQL语句在几年前曾经有效,但现在无效,我收到以下错误消息: 1054-条款“on”中的未知列“促销卡详细信息.卡id” 这是我的SQL语句: SELECT DISTINCT Promotion_Card_details.Card_id, Promotion_Merchant_details.Merchant_id, Promotion_details.Promotion_id, Issuer_details.IssuerName,

下面的SQL语句在几年前曾经有效,但现在无效,我收到以下错误消息:

1054-条款“on”中的未知列“促销卡详细信息.卡id”

这是我的SQL语句:

SELECT DISTINCT Promotion_Card_details.Card_id, 
       Promotion_Merchant_details.Merchant_id, 
       Promotion_details.Promotion_id, 
       Issuer_details.IssuerName, 
       Card_details.CCType, 
       PaymentType_details.PaymentTypeName, 
       Merchant_details.MerchantName, 
       PromotionText, 
       PromotionEndDate 
FROM Promotion_details 
INNER JOIN Card_details ON (Card_details.Card_id=Promotion_Card_details.Card_id) 
INNER JOIN Issuer_details ON (Issuer_details.Issuer_id=Card_details.Issuer_id) 
INNER JOIN PaymentType_details ON (PaymentType_details.PaymentType_id=Card_details.PaymentType_id) 
INNER JOIN Merchant_details ON (Merchant_details.Merchant_id=Promotion_Merchant_details.Merchant_id) 
INNER JOIN Promotion_Merchant_details ON (Promotion_Merchant_details.Promotion_id=Promotion_details.Promotion_id) 
INNER JOIN Promotion_Card_details ON (Promotion_details.Promotion_id=Promotion_Card_details.Promotion_id) 
WHERE ((Promotion_details.Promotion_id = '13' OR Promotion_details.Promotion_id = '14'  
            OR 
      Promotion_details.Promotion_id = '15' OR Promotion_details.Promotion_id = '16' OR 
      Promotion_details.Promotion_id = '17' OR Promotion_details.Promotion_id = '18' OR 
      Promotion_details.Promotion_id = '19' OR Promotion_details.Promotion_id = '20' OR
      Promotion_details.Promotion_id = '21' OR Promotion_details.Promotion_id = '22' OR 
      Promotion_details.Promotion_id = '23' OR Promotion_details.Promotion_id = '24' OR 
      Promotion_details.Promotion_id = '25' OR Promotion_details.Promotion_id = '361' 
      OR Promotion_details.Promotion_id = '364' OR Promotion_details.Promotion_id = '382') )

任何帮助都将不胜感激,因为我已经尝试在某些部分周围使用括号,但它仍然没有修复它。

JOIN
s是左关联的,因此给定的
ON
子句只能引用已经提到的表。因此,重新排列这些:

FROM Promotion_details 
   INNER JOIN Card_details ON (Card_details.Card_id=Promotion_Card_details.Card_id) 
   INNER JOIN Issuer_details ON (Issuer_details.Issuer_id=Card_details.Issuer_id) 
   INNER JOIN PaymentType_details ON (PaymentType_details.PaymentType_id=Card_details.PaymentType_id) 
   INNER JOIN Merchant_details ON (Merchant_details.Merchant_id=Promotion_Merchant_details.Merchant_id) 
   INNER JOIN Promotion_Merchant_details ON (Promotion_Merchant_details.Promotion_id=Promotion_details.Promotion_id) 
   INNER JOIN Promotion_Card_details ON (Promotion_details.Promotion_id=Promotion_Card_details.Promotion_id)
按此顺序:

FROM Promotion_details 
   INNER JOIN Promotion_Card_details ON (Promotion_details.Promotion_id=Promotion_Card_details.Promotion_id)
   INNER JOIN Card_details ON (Card_details.Card_id=Promotion_Card_details.Card_id) 
   INNER JOIN Issuer_details ON (Issuer_details.Issuer_id=Card_details.Issuer_id) 
   INNER JOIN PaymentType_details ON (PaymentType_details.PaymentType_id=Card_details.PaymentType_id) 
   INNER JOIN Promotion_Merchant_details ON (Promotion_Merchant_details.Promotion_id=Promotion_details.Promotion_id) 
   INNER JOIN Merchant_details ON (Merchant_details.Merchant_id=Promotion_Merchant_details.Merchant_id) 

您可以发布表的描述吗?是否有人重命名或删除了
促销卡详细信息
表中的字段?此外,将您的
WHERE
子句更改为在中使用
而不是一长串的
中。促销卡详细信息是一个带有主键的表,和两个外键:来自促销详情表的促销id和来自卡片详情表的卡片id。类似地,Promotion\u Merchant\u details表有一个主键和两个外键,等等。嗨,Alex K,我的SQL语句是由Perl动态生成的,因此尽管在上面的示例中它的所有Promotion\u details.Promotion\u id都是Promotion\u details.Merchant\u id,但在其他示例中它可以与Merchant\u details.Merchant\u id和其他约束混合使用。谢谢我尝试了它。不管我如何重新排列所有内部连接语句,第一个内部连接总是会给出错误#1054-on子句中的未知列“XXX”@James:Ah,我没有注意到还有其他错误排列的依赖项。但还是一样的问题。我现在更新了我的答案。是的,很抱歉,我注意到我上面的SQL语句中有一个拼写错误,我认为我在那里放的要替换的语句现在是正确的,它在“on”子句中抛出了#1054-未知列“Promotion\u Card\u details.Card\u id”,哇,太棒了。成功了!我简直不敢相信这是关于对内部连接语句重新排序的。谢谢:“给定的ON子句只能引用已经提到的表。”我的查询看起来非常好,但我不知道这一点!