2013-01-07 25 views
0

我有這個問題,如何使用簡寫調用領域在MySQL查詢

使用查詢,如下所示:

mysql_query("SELECT * FROM mytable WHERE samefield='2' AND (SELECT 
    COUNT(*) FROM mytableB as d WHERE d.samefield=samefield)"); 

返回我錯了結果,即工作是如下的理想:

mysql_query("SELECT * FROM mytable WHERE samefield='2' AND (SELECT 
    COUNT(*) FROM mytableB as d WHERE d.samefield=mytable.samefield)"); 

注意我是如何必須明確進入MYTABLE的名字爲它知道精確的外觀並從數據庫中獲取正確的結果,是有一個明確的外卡作爲最外層父●要使用uery確定d.samefield應該等於第一個父母而不知道它是別名,d.samefield = thewildcard.samefield是我要查找的內容,或者以某種方式指定它應該查找其父項。

因爲如果我使用d.samefield = samefield它只是不堅持父母的值,因爲它似乎問題是有一個字段具有相同的名稱,查詢表a和子表b查詢,最簡單如果它的工作是必須在子查詢上聲明一個別名,並讓第一個父查詢字段成爲mysql查找的字段,但它似乎不能以這種方式工作。

我知道整個問題聽起來有點愚蠢,但它對我來說很重要,因爲我已經圍繞這個3個小時了,並且嘗試了一些方法,例如php函數發送表名,以便爲其附加子查詢轉化爲主要查詢,甚至還嘗試了php的eval,但這一切都使得它在上下文中非常複雜的解決方案,我需要爲此進行回答。

+1

你總是可以別名外表像'outer' –

+0

爲什麼不能簡單地用'SELECT COUNT(*)FROM mytable的WHERE samefield ='2''? 和@Asad的評論+1。 順便問一下問題到底是什麼? – kmkaplan

+0

我知道,我也想到了,事情是我花了一大套文件的全局替換,使得我重命名了所有的文件,因爲我這樣做是爲了應用子查詢來使用可以通過$ var和php調用它的上下文,$ var是子查詢,因此是的,我可能需要給外部查詢提供一個通用別名,它可能是解決方案,但只是想知道是否有類似家長。 (一個輔助別名,對於由mysql自動設置的父查詢是全局的) – lbennet

回答

1

爲什麼不在兩個表上放置別名?

SELECT a.* FROM mytable a WHERE a.samefield='2' AND 
(SELECT COUNT(*) FROM mytableB b WHERE b.samefield=a.samefield); 
+0

看到我上面的評論,我正在尋找一個由mysql自動設置的父通配符,如果有一個 – lbennet