Как я могу получить записи из одной таблицы и связанные записи из другой таблицы в одном запросе?

У меня есть две таблицы: items и itemmeta. items имеет item_id, который связывает его с itemmeta, у которого есть itemmeta_id, item_id, meta_key и meta_value. Я сделал это, чтобы, если мне нужно было добавить специальный флаг или значение к элементу, мне не приходилось постоянно менять таблицу элементов.

Теперь я расплачиваюсь за гибкость. Я хочу знать, могу ли я объединить запрос и немного php в более продуманный запрос.

сначала я делаю что-то вроде этого:

SELECT * FROM items;

затем, просматривая их, я делаю это для каждого в php:

$sql = "SELECT * FROM itemmeta WHERE item_id='".$item['item_id']."' ";
$meta_result = mysql_query($sql, $conn) or die(mysql_error());
$item['meta'] = array();
while( $meta=mysql_fetch_assoc($meta_result) ) {
  $item['meta'][$meta['meta_key']] = $meta['meta_value'];
}

Можно ли выполнить вторую часть, используя подзапрос или что-то в этом роде? Я думаю, что сложная часть сохранит тот же результат. пример: $ item ['meta'] ['my_key'] = 'значение'. Я предполагаю, что это будет больше $ item ['meta'] [0] [0] = 'my_key' и $ item ['meta'] [0] [1] = 'value'.

1
задан Daniel Vandersluis 30 September 2010 в 16:06
поделиться