2016-08-06 14 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いけないしてください、それ はPDOデータベースの拡張を学び、あなたのエネルギーを費やして、あなただけのPHPを学習している特別場合(PHP7に永遠になくなって)は推奨されません。 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」は単語ではありません。

関連する問題