php
  • mysql
  • 2013-10-25 48 views 0 likes 
    0

    內部變量我想查詢數據庫中的唯一結果,句子(從SQL控制檯要求)就可以了,我傳送到數據庫中的說法是確定,所以必須拋出的結果。級聯的PHP語句

    這是我的查詢:

    $cliente = mysql_fetch_assoc($mySQL->query("SELECT nombre FROM clientes WHERE rfc=(SELECT rfc FROM facturas WHERE rfc='".$numFactura."')")); 
    if (empty($cliente)) 
    

    它總是空的原因還有一個問題,用句,應該怎樣怎樣?

    +0

    那de依賴'$ mysql-> query()'方法返回的內容。 如果返回類型的MySQL'resource'那麼你可以將它傳遞給'mysql_fetch_assoc' – voldomazta

    回答

    0

    試試這個;

    $cliente = mysql_fetch_assoc($mySQL->query("SELECT nombre FROM clientes WHERE rfc=(SELECT rfc FROM facturas WHERE rfc='$numFactura')")); 
    if (empty($cliente)) 
    
    0

    如果您的子查詢返回多個行,則會失敗。確保它只返回一行。如果沒有,試試這個。

    SELECT nombre FROM clientes WHERE rfc IN (SELECT rfc FROM facturas WHERE rfc='".$numFactura."') 
    
    +0

    他已經只能從他的子查詢返回'rfc'。我不確定你評論的目的是什麼。如果他的子查詢返回多於一行,則沒有問題,因爲結果集上的所有'rfc'都是相同的。 – voldomazta

    +0

    是的,那是真的。他實際上應該這樣做:「SELECT nombre FROM clientes WHERE rfc ='」。 $ numFactura。 「')」。但是如果子查詢返回多行,他的原始查詢可能會失敗。 – Pradeep

    +0

    你說得對,我以爲我們使用一個'IN'作爲他的子查詢而不是'=' – voldomazta

    0

    您的SQL查詢使用子查詢,但您的子查詢是多餘的。

    'SELECT rfc FROM facturas WHERE rfc='".$numFactura."'' 
    

    這僅意味着將返回所有rfc是等於$numFactura

    你的SQL查詢可以有效地:

    SELECT nombre FROM clientes WHERE rfc = "$numFactura" 
    

    但是,如果你想確保它有一個相應的條目在facturas表上,那麼你的查詢應該是:

    SELECT c.nombre FROM clientes c JOIN facturas f USING (rfc) GROUP BY c.rfc; 
    
    相關問題