将两个SELECT语句组合成一个JOIN

时间:2012-10-16 12:35:19

标签: mysql database join

我有两个表:table_1:item_idname ... table_2:image_iditem_idurl

以下函数检索传入的'$ name'项的'urls'。我首先需要从table_1获取'item_id'以在查询中使用。我只需要从table_2返回'url'。

它目前工作正常,但我觉得可以通过JOIN而不是两个单独的查询在一个查询中完成。我尝试过使用不同的'JOIN'来使其正常工作,但我似乎无法做到正确。

以下是两个查询的功能......

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 个答案:

答案 0 :(得分:2)

您的查询问题是WHERE table_1.item_id = '$name',应该是name而不是item_id

SELECT  b.url
FROM    table1 a
        INNER JOIN table2 b
            ON a.item_id = b.item_id
WHERE   a.name = '$name'

答案 1 :(得分:0)

select url from table_2 where item_id IN (select item_id from table_1 where name = $name )