2016-12-13 128 views
-1

这里是我的查询嵌套查询语句不起作用

SELECT con_serial,column2,column3 
FROM 
(SELECT con_serial,column2,column3 
FROM big_table 
WHERE ISNULL(contact1, '')+'#'+ISNULL(contact2, '')+'#'+ISNULL(contact3, '')+'#'+ISNULL(contact4, '')+'#'+ISNULL(contact5, '') 
LIKE '%' + '".$conserial."' + '%') AS a 
WHERE con_serial 
IN('".$contact1."','".$contact2."','".$contact3."','".$contact4."','".$contact5."') 

在内部选择我希望得到这在他们5列(contact1的一个将此值$conserial行。 ..contact5)

和外部选择从中选择行其列con_serial是一个变量($ contact1 ... $ contact5)

有谁能够看到有什么不对吗?

+0

这是一团糟!首先,您将PHP(可能)与SQL混合,而不是在PHP上下文中。那么不清楚'$ con_serial'或五个'$ contact1'等是否是选择标准。最后是什么意思'ISNULL'在这里,'#'和'+'怎么样? – cFreed

+0

感谢您尝试帮助。相信我,如果这是混乱我整个项目只是灾难。 是的,我使用的PHP和查询将在PHP中运行 实际上我是一种新的MySQL和我使用isnull()来替换空值'''' 我想如果任何一行中的任何五列都包含特定值“$ con_serial”,并且如果是这样的话,就可以得到它们并且课程使用这个结果在外部选择 有没有更好的存档? @cFreed – khoshrang

+0

理解你所需要的东西并不容易:按照你的描述,我看到了一种矛盾。它似乎是:1)在'contactN'五个列中的任何一列中搜索PHP'$ conserial'值; 2)'con_serial'列的值应该匹配五个PHP'$ contactX'中的任何一个。这可能不是你想要的。请详细说明,并告诉我们:1)'big_table'结构; 2)用作标准的PHP变量列表。 – cFreed

回答

0

尽管你有新的表述,但仍然不清楚。
不过我会尽力给你一个答案的基础上,我可以猜...

首先这里是我如何会重新制定你的需要:

  • 你有PHP变量的一些值:一个$conserial和五个$contact#其中#是1-5
  • 表结构至少包含这些列:con_serialcolumn2column3和五个contact#其中#是1-5
  • 要选择行,其中两个(这里是您需要的最奇怪的部分):
    • 至少contact#列的一个PHP的$conserial
    • con_serial列相匹配的至少一个相匹配PHP $contact#

不过,请注意,你不需要有两个嵌套SELECT:你只需要每一行,以满足两个条件,使他们能够在的逻辑与条款。

此基础上,您的查询应该是:

$query = " 
    SELECT con_serial, column2, column3 
    FROM big_table 
    WHERE con_serial IN ('$contact1', '$contact2', '$contact3', '$contact4', '$contact5') 
    AND '$con_serial' IN (contact1, contact2, contact3, contact4, contact5) 
"; 
+0

!谢谢你,我删除了内部选择 – khoshrang

0

我想在where子句允许螺母任何 方式我已经使用两个在这样

SELECT con_serial,,column2,column3 
FROM(SELECT con_serial,column2,column3 
FROM 
    big_table 
WHERE '".$conserial."' IN(contact1,contact2,contact3,contact4,contact5)) a 
    WHERE con_serial IN('".$contact1."','".$contact2."','".$contact3."','".$contact4."','".$contact5."' 

这是笏我想TNX任何方式解决了这个总和的一部分;)