1

私は2つのテーブルを持っています: table_1: item_id, name... table_2: image_id, item_id,url

次の関数は、渡された「$name」を使用してアイテムの「url」を取得します。最初に、クエリで使用する table_1 から「item_id」を取得する必要があります。table_2 から「url」を返すだけで済みます。

現在は問題なく動作していますが、2 つの個別のクエリではなく、JOIN を使用して 1 つのクエリで実行できるように合理化できると思います。さまざまな「JOIN」を使用して機能させようとしましたが、うまくいかないようです。

2つのクエリを使用した現在の関数は次のとおりです...

function get_items( $name ) {

    global $wpdb;

    $sql1 = "SELECT `item_id` FROM `table_1` WHERE `name` = '$name'";
    $results1 = $wpdb->get_var( $sql1 );

    $sql1 = "SELECT `url` FROM `table_2` WHERE `item_id` = '$results1'";
    $results2 = $wpdb->get_results( $sql1, ARRAY_A );

    return $results2;

}

そして、これが私が実装しようとした「JOIN」ですが、失敗しました(私もそれを切り替えて「LEFT / RIGHT JOIN」を実行しましたが、同じ結果が得られました)...

$sql1 = "SELECT `table_2`.`url` 
         FROM `table_2` 
         INNER JOIN `table_1`
         ON `table_2`.`item_id` = `table_1`.`item_id`
         WHERE `table_1`.`item_id` = '$name'";

これら 2 つのクエリを組み合わせる際のアドバイスはありますか?

4

2 に答える 2

2

あなたのクエリの問題はこれです、それはではないWHERE table_1.item_id = '$name'はずですnameitem_id

SELECT  b.url
FROM    table1 a
        INNER JOIN table2 b
            ON a.item_id = b.item_id
WHERE   a.name = '$name'
于 2012-10-16T12:38:31.593 に答える
0
select url from table_2 where item_id IN (select item_id from table_1 where name = $name )
于 2012-10-16T12:40:25.043 に答える