2

以下のクエリはうまく機能します。ここで、 address という別のテーブルを追加したいと思います。このテーブルには、以下の同じ変数submissionidzip変数が含まれています。アドレスwheresubmissionidからすべての変数を取得し、これらの結果を使用して、以下のクエリで送信テーブルから対応する行を検索したいと思います。zip = '$zip'title

$sqlStr = "SELECT title, points, submissionid
             FROM submission 
            WHERE zip = '$zip'
         ORDER BY points DESC, title ASC              
     LIMIT $offset, $rowsperpage";
4

1 に答える 1

4

サブクエリを使用してこれを達成できます

$sqlStr = "SELECT title, points, submissionid
         FROM submission 
        WHERE submissionid IN(
              SELECT submissionid 
              FROM addreses
              WHERE zip = '$zip')
     ORDER BY points DESC, title ASC              
 LIMIT $offset, $rowsperpage";

参考:INサブクエリ

またはJOINで

$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              
 LIMIT $offset, $rowsperpage";

参考:JOIN

@AdrianCornish がコメントで述べたように、INNER 結合はサブクエリよりも高速です。したがって、JOIN を使用した 2 番目のオプションを使用することをお勧めします。

SOサブクエリと結合に関する関連スレッド

于 2012-06-02T07:12:03.473 に答える