Как вывести данные из двух таблиц?
Есть 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`
И да учите сиквел он позволяет даже признаться в любви девушке, а не всякую бизнес логику
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для вывода данных из двух таблиц в базе данных можно воспользоваться оператором JOIN. JOIN позволяет объединить данные из двух таблиц на основе определенного условия.
Пример использования JOIN для вывода данных из двух таблиц:
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;
INNER JOIN возвращает только те строки, где есть совпадение по указанному условию.
Пример LEFT JOIN:
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;
RIGHT JOIN возвращает все строки из правой таблицы (table2) и соответствующие строки из левой таблицы (table1).
Таким образом, используя оператор JOIN и выбирая подходящий тип JOIN, вы сможете объединить данные из двух таблиц и вывести необходимую информацию.