za4me
@za4me
Человек

Выборка из двух таблиц одним запросом в разные массивы?

Добрый день.

Есть две таблицы, head и body. В них одинаковые строки id, name.
Каким образом сделать один запрос и вывести эти таблицы в разные массивы?

Что-то типо:

$result = $conn->query("SELECT * FROM head, body");

while ($row = $result->fetch_assoc()) {
	$arr['head'][] = $row['head'];
	$arr['body'][] = $row['body'];
}

Всем спасибо.
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
В чём проблема сделать 2 запроса? Зачем "извращения" с SQL'ем?

Хех ну если так хочется...
$result = $conn->query('
    (
        select id, name, "head" as table_name
        from head
    ) union (
        select id, name, "body" as table_name
        from body
    )
');

while ($row = $result->fetch_assoc()) {
    $tableName = $row['table_name'];
    unset($row['table_name']);
    $arr[$tableName][] = $row;
}

$result->free();

Но такое прокатит только если head.id и body.id имеют одинаковый тип, а так же head.name и body.name тоже имеют одинаковый тип.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@NataliaCh
например так
$result = $conn->query("SELECT t1.id as id1, t1.name as name1, t2.id as id2, t2.name as name2 
FROM head t1, body t2");

while ($row = $result->fetch_assoc()) {
  $arr['head'][] = $row['id1'] . $row[name1'] ;
  $arr['body'][] = $row['id2'] . $row[name2'] ;
}


потом дубликаты из массивов убрать.
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
А почему у вас нет связи между таблицами ?

select h.id, h.name head_name, b.name body_name, from head h, body b  where
where h.id=b.id
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы