0

*親テーブル*:車両

CREATE TABLE `vehicle` (
    `vehicle_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `version_number` INT(10) UNSIGNED NULL DEFAULT '0',
    `vehicle_no` VARCHAR(64) NOT NULL COLLATE 'utf8_bin',
    `vehicle_reg_no` VARCHAR(64) NOT NULL COLLATE 'utf8_bin',
    `vehicle_name` VARCHAR(64) NOT NULL COLLATE 'utf8_bin',
    `total_seat` INT(15) NOT NULL,
    `route_id` INT(10) UNSIGNED NOT NULL,
    `available_seat` INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY (`vehicle_id`)
)

子テーブル: allocate_vehicle

CREATE TABLE `allocate_driver` (
    `allocate_driver_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
    `version_number` INT(10) UNSIGNED NULL DEFAULT '0',
    `vehicle_id` INT(10) UNSIGNED NOT NULL,
    PRIMARY KEY (`allocate_driver_id`),
    INDEX `fk_vehicle_idx` (`vehicle_id`),
     CONSTRAINT `fk_vehicle_idx` FOREIGN KEY (`vehicle_id`) REFERENCES `vehicle` (`vehicle_id`) ON UPDATE NO ACTION ON DELETE NO ACTION,

)

だから私はこのクエリを与えました:select veh.* from vehicle as veh JOIN allocate_driver as allDr on veh.vehicle_id!=allDr.vehicle_id

しかし、正しく動作しません...挿入する前に、車両ごとに割り当てた後、車両のリストが必要です。リストに表示されないようにする必要があります。誰でも教えてください。事前に感謝します:)

4

1 に答える 1

0

any私がこれを正しく理解していれば、ドライバーに割り当てられていない車両を見つけたいと考えています。クエリは、ドライバーに割り当てられていない車両を検索しますsome(これらのドライバーごとに 1 回返されます)。

次に、このクエリはあなたが望むものを与えるはずです:

SELECT veh.* FROM vehicle AS veh
LEFT JOIN allocate_driver as allDr 
ON veh.vehicle_id = allDr.vehicle_id
WHERE allDr.vehicle_id IS NULL
于 2013-01-19T11:34:40.057 に答える