これはphp not sqlで行います。以下は例です:
<?php
//connect to dbh
$dbh = new PDO($dsn, $user, $password);
/**
* @param array $data
*/
function addBooking($data)
{
global $db;
$booking_id = false;
//add any other fields you have too.
$sth = $db->prepare('INSERT INTO Bookings (name,date)
VALUES (:name,:date);');
$sth->bindParam(':name', $data['name'], PDO::PARAM_STR);
$sth->bindParam(':date', $data['name'], PDO::PARAM_STR);
// and bind any other fields you have.
if ($sth->execute()) {
$booking_id = intVal($db->lastInsertId());
$sql = '';
$failed = false;
foreach ($data['passengers'] as $key => $passenger) {
//add any other fields you have too.
$sth = $db->prepare('INSERT INTO Passengers (name,booking_id)
VALUES (:name,:booking_id);';
$sth->bindParam(':name', $passenger['name'], PDO::PARAM_STR);
$sth->bindParam(':date', $booking_id, PDO::PARAM_INT);
// and bind any other fields you have.
$sth->execute();
}
}
return $booking_id;
}
function getBooking($booking_id)
{
global $db;
//add any other fields you have too.
$sth = $db->prepare('
SELECT
Bookings.name as booking_name,
Bookings.date as booking_date,
Passengers.* FROM Bookings
RIGHT JOIN Passengers on Bookings.id = Passengers.booking_id
WHERE Bookings.id = :id;');
$sth->bindParam(':id', $booking_id, PDO::PARAM_INT);
$result = $sth->fetch(PDO::FETCH_ASSOC);
$booking = array(
'name' => $result[0]['booking_name']]],
'name' => $result[0]['booking_date']]],
'passengers' => array()
);
foreach ($result as $row) {
if (isset($row['name'])) {
$booking['passengers'][] = array(
'name' => $row['name']
);
}
}
return $booking;
}
/**
* Usage
*/
$data = array(
'name' => 'Taxi',
//other data here too
'passengers' => array(
'name' => 'Antony'
//other data here too
)
);
$booking_id = addBooking($data);
$booking = getBooking($booking_id);
ですから、あなたが実際に乗客数を格納する必要はありませんあなたのテーブル構造
Passengers
id | name | booking_id
Bookings
id | name | date
のためにこのようなものが必要になり、簡単に使用しているを見つけることができますクエリ。
このコードもエラーがある場合があります。しかし、それを出発点として使うことができるはずです。
これは、通常、アプリケーションレベルで実行されるか、または「while」ループを使用するストアドプロシージャによって実行されます。 –
私たちにERDを表示すると良いでしょう... – barudo
'INSERT' /' SELECT'で複数の行を生成することができます。後者は 'JOIN'の一部にすることもできないこともできます。あなたはそれぞれの例ですか? – Drew