2013-06-21 3 views
0

Я пытаюсь вернуть поле описания в таблице ca_list_item_labels на основе общего поля (item_id) между ca_list_item_labels и ca_list_items, где list_id = 41 в ca_list_items.Как выбрать записи в одной таблице на основе общего значения id из другой таблицы?

Ближайшая вещь, с которой я могу справиться, - это подзапрос ... Я довольно новичок в написании запросов mySQL.

Я попытался следующие два запроса без какого-либо успеха:

SELECT description FROM ca_list_item_labels UNION SELECT * FROM ca_list_items WHERE 'list_id' = 41; 

    SELECT description FROM ca_list_item_labels WHERE (SELECT item_id FROM ca_list_items WHERE 'list_id' = 41); 
+1

Я думаю, что вы могли бы попробовать JOINS, однако было бы неплохо, если бы вы опубликовали схему db здесь, с несколькими тестовыми вводами и желаемым результатом. Или, еще лучше - setup sqlfiddle: http://www.sqlfiddle.com/ – sinisake

ответ

1

Вы должны быть в состоянии сделать это с помощью простого соединения. Нечто подобное должно работать:

SELECT decsription 
    FROM ca_list_item_labels JOIN ca_list_items USING (item_id) 
    WHERE list_id = 41 
+0

Невозможно сказать, почему это не знает немного больше о таблицах. Как было сказано выше, пример sqlfiddle или просто отправка схемы помогли бы. –

+0

Извините, что вопрос был между клавиатурой и стулом. Получил ее мурлыканье, и за исключением парных записей, которые я не хотел там. Спасибо за удар в правильном направлении. Присоединения классные! –

1

Вы можете использовать JOIN-query:

SELECT a.*, b.description FROM ca_list_items AS a 
          LEFT JOIN ca_list_item_labels AS b 
          ON a.list_id = b.list_id 
          WHERE a.list_id = 41  

Полагая здесь, что list_id одинакова на обеих таблицах.

Смежные вопросы