mysql
  • subquery
  • 2011-09-01 65 views -1 likes 
    -1
    $logged = $_SESSION['logged']; 
    
        $construct = "SELECT child.* 
           FROM products child 
           LEFT JOIN products parent on parent.sid=child.sid 
           WHERE parent.id = 
            '(SELECT productid 
            FROM subscribed 
            WHERE username=\"$logged\")' 
           AND parent.keyword != child.name 
           ORDER BY child.id DESC"; 
    

    我無法使子查詢工作我得到錯誤的結果。父查詢很好,因爲我之前使用過它。這是我第一次使用一個對我來說很裸露的子查詢。幫助子查詢

    我想讓子查詢從'訂閱'表中獲取所有產品,其中username = $ logs。

    這是我想要的,但在一個查詢中,檢查WHERE子句的差異。

    $construct = "SELECT child.* 
           FROM products child 
           LEFT JOIN products parent on parent.sid=child.sid 
           WHERE parent.id= 
           'SUB QUERY RESULT 1' 
           AND parent.keyword != child.name 
           ORDER BY child.id DESC"; 
    
    $construct = "SELECT child.* 
           FROM products child 
           LEFT JOIN products parent on parent.sid=child.sid 
           WHERE parent.id= 
           'SUB QUERY RESULT 2' 
           AND parent.keyword != child.name 
           ORDER BY child.id DESC"; 
    
    $construct = "SELECT child.* 
           FROM products child 
           LEFT JOIN products parent on parent.sid=child.sid 
           WHERE parent.id= 
           'SUB QUERY RESULT 3' 
           AND parent.keyword != child.name 
           ORDER BY child.id DESC"; 
    

    如何在不循環查詢的情況下在一個查詢中執行此操作。我甚至需要一個子查詢?

    +0

    什麼沒有工作?你有錯誤,還是錯誤的結果? –

    +0

    錯誤的結果..是正確的,我想要完成的查詢? – user892134

    回答

    1

    您可以使用一個內連接到你想要的東西:

    $construct = "SELECT child.*   
        FROM products child   
        LEFT JOIN products parent on parent.sid=child.sid   
        INNER JOIN subscibed s ON (s.productid = parent.id) 
        WHERE s.username = '$logged' 
        AND parent.keyword != child.name   
        ORDER BY child.id DESC"; 
    

    如果你想在三個查詢在一個連接做:

    $construct = "SELECT child.*    
          FROM products child    
           LEFT JOIN products parent on (parent.sid = child.sid)    
          WHERE parent.id IN    
           (SELECT productid FROM table1 WHERE username= '$logged' 
           UNION 
            SELECT productid FROM table2 WHERE something = '$somethingelse' 
           UNION 
            SELECT productid FROM table3 WHERE otherthing = '$otherstuff' 
           )    
          AND parent.keyword != child.name    
          ORDER BY child.id DESC"; 
    
    相關問題