2016-12-13 96 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任何方式解決了這個總和的一部分;)