У меня две таблицы.
1- Автомобили (столбцы: ID, имя, описание, изображение)
2- Мотоциклы (столбцы: ID, имя, описание, изображение)
Я хочу зациклить две таблицы на странице Vehicles.php. Я хочу отсортировать по идентификатору в цикле.
Я коды
< Сильный > АВТОМОБИЛИ
$cars= $baglan->query("SELECT * FROM Cars ORDER BY id", PDO::FETCH_ASSOC);
if ( $cars->rowCount() )
foreach( $cars as $car){
-
}}
< Сильный > МОТОЦИКЛЫ
$query= $baglan->query("SELECT * FROM Motorcycles ORDER BY id", PDO::FETCH_ASSOC);
if ( $query->rowCount() )
foreach( $query as $row){
-
}}
Как мне объединить эти два запроса?
Этот код не работает
$vehicles= $baglan->query("SELECT * FROM Motorcycles , Cars ORDER BY id", PDO::FETCH_ASSOC);
if ( $vehicles->rowCount() )
foreach( $vehicles as $vehicle){
-
}}
Спасибо
2 ответа
Если вы хотите объединить их в одном запросе, вы можете использовать UNION
в mysql, но я настоятельно рекомендую использовать его только в том случае, если столбцы двух таблиц совпадают.
try {
$vehicles = $baglan->query("
SET @id:=0;
SELECT (@id:=@id+1) AS `ID`,`Name`,`Description`,`Image` FROM (
(SELECT * FROM `Cars` ORDER BY `ID`)
UNION
(SELECT * FROM `Motorcycles` ORDER BY `ID`)
) AS `Vehicles`;
", PDO::FETCH_ASSOC);
if ($vehicles->rowCount()) {
$id = 1;
foreach($vehicles as $vehicle) {
echo $id++; // Use $id because the `id` column is from two tables
// use other fields normally
}
}
} catch (Exception $e) {
echo $e->getMessage();
}
Но если вы хотите упорядочить смешанные данные в исходном столбце идентификатора, вы можете использовать это (по убыванию, например):
try {
$vehicles = $baglan->query("
SELECT * FROM (
(SELECT * FROM `Cars` ORDER BY `ID` DESC)
UNION
(SELECT * FROM `Motorcycles` ORDER BY `ID` DESC)
) AS `Vehicles`
ORDER BY `ID` DESC;
", PDO::FETCH_ASSOC);
if ($vehicles->rowCount()) {
$id = 1;
foreach($vehicles as $vehicle) {
echo $id++; // Use $id because the `id` column is from two tables
// use other fields normally
}
}
} catch (Exception $e) {
echo $e->getMessage();
}
Поскольку они имеют одинаковые столбцы, вы можете использовать UNION
,
SELECT * FROM Motorcycles
UNION
SELECT * FROM Cars
Похожие вопросы
Новые вопросы
mysql
MySQL - это бесплатная система управления реляционными базами данных с открытым исходным кодом (RDBMS), использующая язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. Д. Это разные БД, которые все используют свои собственные диалекты SQL для управления данными.