2016-08-06 172 views
0

我正試圖從查詢中的IN子句中找到一個值。 我正在查找的列是「contentAvailability」表中的「viewURL」。從IN子句查詢中獲取值

$availableProvidersSQL = mysql_query("SELECT * FROM contentProviders 
       WHERE 
       code IN (SELECT providerCode FROM contentAvailability WHERE contentGuid = '".($row['guid'])."') 
       ORDER BY firendlyName") or die(mysql_error()); 

       while($availableProvidersRow = mysql_fetch_array($availableProvidersSQL)) { 

         echo '<div class="col-lg-12 col-md-12 col-sm-6 col-xs-6" style="padding-bottom:7px;"> 
         <figure> 
         <a href="#"><img src="'.$baseURL.'images/providers/'.$availableProvidersRow['code'].'/Logo.jpg" class="providerLink"></a><br /> 
         </figure> 
         </div>'; 

       } 

任何幫助,將不勝感激

+0

這個問題有點不清楚。你能分享一下你的表格結構,一些樣本數據,以及你想要得到的樣本結果嗎? – Mureinik

+0

請不要使用[mysql_'數據庫擴展](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php),它 已被棄用(永遠不會在PHP7中)特別是如果你只是學習PHP,花費你的精力學習'PDO'數據庫擴展。 [從這裏開始](http://php.net/manual/en/book.pdo.php)其真的很容易 – RiggsFolly

回答

2

如果列contentGuid是常見的兩種contentAvailability和contentProviders,那麼爲什麼不使用JOIN?

SELECT 
    pv.*, 
    av.viewUrl 
FROM contentAvailability av 
JOIN contentProviders pv ON pv.contentGuid = av.contentGuid AND av.providerCode = pv.code 
WHERE av.contentGuid = $row['guid'] 
ORDER BY av.friendlyName 

如果contentGuid是不常見的兩個表,那麼你可以做一個JOIN這樣的:

SELECT 
    pv.*, 
    av.viewUrl 
FROM contentAvailability av 
JOIN contentProviders pv ON av.providerCode = pv.code  
WHERE av.contentGuid = $row['guid'] 
ORDER BY av.friendlyName 

請讓我知道如果有什麼我失蹤。

編輯顯示contentGuid對兩個表不共用的情況。

0

該查詢得到了一個有點糊塗了,這應該工作

$availableProvidersSQL = mysql_query(
      "SELECT * FROM contentProviders 
      WHERE 
      code IN (
         SELECT providerCode 
         FROM contentAvailability 
         WHERE contentGuid = '{$row['guid']}' 
        ) 
      ORDER BY firendlyName") 
    or die(mysql_error()); 

請記住,如果您使用的是雙引號的字符串標量變量簡單地擴展到他們的價值,但是當使用數組時,你必須忘記數組居住者周圍的引號,如" $row[guid] "或使用{}圍繞數組,像我上面那樣。

請不要使用the mysql_ database extension,它 被棄用(一去不復返在PHP7)特別是如果你剛開始學習PHP,花你的精力學習PDO數據庫擴展。 Start here它真的很容易

+0

JOIN會很棒,但我回答了問題。 OP顯然是在學習,所以我決定不用選擇和混淆他們。 – RiggsFolly

+0

@Strawberry我想到OP在講授關於IN()子句的章節,因此,建議使用JOIN的答案只是無關緊要 – RiggsFolly

0
SELECT x.columns 
    , x.I 
    , x.actually 
    , x.want 
    FROM contentProviders x 
    JOIN contentAvailability y 
    ON y.providerCode = x.code  
WHERE y.contentGuid = '{$row['guid']}' 
ORDER 
    BY x.firendlyName; 

請注意,'firendly'不是一個單詞。