2012-06-05 89 views
0

有人向我詢問了以前關於堆棧溢出問題的以下問題。它應該從兩個表中提取「submissionid」,其名稱分別爲提交地址,其中zip = '$zip'。 (這兩個表中都出現「submissionid」和「zip」)查詢從表A和B中獲取結果,然後使用結果從表中獲取行A

然後,我想查找與所有這些「submissionid」相對應的字段「標題」。本場「稱號只出現在表提交

然後,我想查詢產生的所有結果的列表‘稱號’S。

我怎麼能修改查詢到辦?此查詢下面似乎從提交省略結果

$sqlStr = "SELECT s.title, s.points, s.submissionid 
     FROM submission s 
     INNER JOIN addresses ad 
     on ad.submissionid = s.submissionid 
     WHERE ad.zip = '$zip' 
    ORDER BY s.points DESC, s.title ASC"; 
+0

你是什麼意思「*下面的查詢似乎忽略從提交*結果」?你能舉一個更具體的例子嗎? – eggyal

+0

@eggyal如果一行在表** **提交**中,並且它具有'zip ='$ zip'',則查詢不返回它。我想要它。它確實返回表**地址**中的行的正確結果。 – John

回答

0

只需添加OR s.zip = '$zip'WHERE條款稍加整理額外的,您的查詢就會變成:。

SELECT submission.title, submission.points, submission.submissionid 
FROM  submission JOIN addresses USING (submissionid) 
WHERE submission.zip = '$zip' OR addresses.zip = '$zip' 
ORDER BY submission.points DESC, submission.title ASC 
0

不知道這是你想要的。

把你的原始查詢到子查詢,並選擇所有提交與同一ID提交

SELECT 
    title, 
    points, 
    submissionid 
FROM submission 
WHERE submissionid IN (
    # Original Query 
    SELECT s.submissionid 
    FROM submission s 
    JOIN addresses ad ON ad.submissionid = s.submissionid 
    WHERE ad.zip = '$zip' 
) 
ORDER BY 
    points DESC, 
    title ASC 
相關問題