Как вывести данные из двух таблиц?

Ссылка скопирована
1 ответ

Есть 2 таблицы, в которых одинаковые поля. Как вывести сразу данные из этих 2-ух таблиц?
SQL-запрос, который у меня есть:

$sql_table = $connect->query("SELECT * FROM `people_city1` FULL JOIN `people_city2`");

$sql_table = $connect->query("SELECT * FROM `people_city1` FULL JOIN `people_city2`");

Как я вывожу эти 2 таблицы:

<?php while($row = $sql_table->fetch_array()){?>                     <tr>                         <td><?php echo $row['fio']?></td>                         <td><?php echo $row['date_bth']?></td>                         <td><?php echo $row['post']?></td>                         <td><?php echo $row['company']?></td>                     </tr>                 <?php }?>

<?php while($row = $sql_table->fetch_array()){?> <tr> <td><?php echo $row['fio']?></td> <td><?php echo $row['date_bth']?></td> <td><?php echo $row['post']?></td> <td><?php echo $row['company']?></td> </tr> <?php }?>

Но код выводит данные только из `people_city2` ровно столько раз, сколько записей в `people_city1`.

P. S. Сделать вывод нужно только с помощью объединения этих таблиц, но не делать просто из 2 таблиц одну. Как мне быть, в чём моя ошибка?

Дополнительно:

а чем принципиально отличаются people_city1 и people_city2, что их понадобилось выносить в отдельные таблицы?

Ошибка детская, она вот в этом: "Есть 2 таблицы, в которых одинаковые поля".
Очень часто новички, которые не понимают, как работает база данных, делают подобное.
И всегда потом приходится переделывать, даже если очень не хочется.
Потому что в БД не должно быть таблиц с одинаковыми полями. Собственно, сообразительные новички уже на этом вопросе, "как выбрать из двух таблиц" начинают понимать, что у них что-то пошло не так.

Так что надо просто сделать одну таблицу, записать в неё данные из всех таблиц с одинаковыми полями, и выбирать из неё обычным способом.

Имя таблицы, кстати, тоже очень странное. Наверняка там внутри тоже треш и угар и вот её-то как раз и надо разделить, только не горизонтально, а вертикально. Судя по составу полей, нужна одна таблица city и одна таблица people, в которой указывается только city id

  • В одной таблице люди из одного города
    В другой таблице люди из другого города
    Т.е. абсолютно никак не получится вывести 2 таблицы сразу, а нужно просто сделать из этих 2-ух таблиц одну?
  • Я там написал ниже - как.
    в одной таблице города
    в другой - все люди у каждого из которых указан id города
    и вот как раз джойн, который вы так топорно пытались использовать, как раз и нужен чтобы соединять таблицу людей с таблицей городов.
SELECT * FROM `people_city1` UNION SELECT * FROM `people_city2`

SELECT * FROM `people_city1` UNION SELECT * FROM `people_city2`

И да учите сиквел он позволяет даже признаться в любви девушке, а не всякую бизнес логику

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Стас DB Ответ

Для вывода данных из двух таблиц в базе данных можно воспользоваться оператором JOIN. JOIN позволяет объединить данные из двух таблиц на основе определенного условия.

Пример использования JOIN для вывода данных из двух таблиц:

SELECT table1.column1, table1.column2, table2.column1
FROM table1
JOIN table2 ON table1.common_column = table2.common_column;

SELECT table1.column1, table1.column2, table2.column1 FROM table1 JOIN table2 ON table1.common_column = table2.common_column;

В данном примере table1 и table2 - названия таблиц, column1 и column2 - названия столбцов, которые мы хотим вывести. common_column - это столбец, по которому происходит объединение данных из двух таблиц.

Также можно использовать различные типы JOIN (INNER JOIN, LEFT JOIN, RIGHT JOIN) в зависимости от того, какие данные вы хотите получить.

Пример INNER JOIN:

SELECT table1.column1, table1.column2, table2.column1
FROM table1
INNER JOIN table2 ON table1.common_column = table2.common_column;

SELECT table1.column1, table1.column2, table2.column1 FROM table1 INNER JOIN table2 ON table1.common_column = table2.common_column;

INNER JOIN возвращает только те строки, где есть совпадение по указанному условию.

Пример LEFT JOIN:

SELECT table1.column1, table1.column2, table2.column1
FROM table1
LEFT JOIN table2 ON table1.common_column = table2.common_column;

SELECT table1.column1, table1.column2, table2.column1 FROM table1 LEFT JOIN table2 ON table1.common_column = table2.common_column;

LEFT JOIN возвращает все строки из левой таблицы (table1) и соответствующие строки из правой таблицы (table2).

Пример RIGHT JOIN:

SELECT table1.column1, table1.column2, table2.column1
FROM table1
RIGHT JOIN table2 ON table1.common_column = table2.common_column;

SELECT table1.column1, table1.column2, table2.column1 FROM table1 RIGHT JOIN table2 ON table1.common_column = table2.common_column;

RIGHT JOIN возвращает все строки из правой таблицы (table2) и соответствующие строки из левой таблицы (table1).

Таким образом, используя оператор JOIN и выбирая подходящий тип JOIN, вы сможете объединить данные из двух таблиц и вывести необходимую информацию.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно