2013-12-04 4 views
0

Какой запрос SELECT я могу использовать, чтобы показывать только cars ГДЕ bookings. status <> 1mysql query на двух таблицах

так на приведенной ниже таблице, cars. id (1, 3, 4, 6) будет отображаться только в результате

я застрял с этим запросом или это ничего хорошего:

SELECT * FROM `cars` as `C` INNER JOIN `bookings` AS `B` ON `C`.`id` = `B`.`id` ....? 

cars

id | name 
    -- | ------------- 
    1 | Car 1 
    2 | Car 2 
    3 | Car 3 
    4 | Car 4 
    5 | Car 5 
    6 | Car 6 

bookings

id | car_id | status 
-- | ------ | ------ 
1 | 1  | 0 
2 | 2  | 1 
3 | 2  | 2 
4 | 1  | 0 
5 | 5  | 1 

EDIT: извините, я не был здесь ясен, я также хочу, чтобы остальные перечисленные s результат, даже если они не находятся на bookings столе

ответ

1

Попробуйте это:

SELECT * FROM `cars` as `C` INNER JOIN `bookings` AS 
`B` ON `C`.`id` = `B`.`id` where `B`.`status` <> 1 

Попробуйте это, если вы не хотите записи из автомобилей, которые не Бронирования:

SELECT * FROM `Cars` as `C` Right JOIN `Booking` AS 
`B` ON `C`.`id` = `B`.`id` 
+0

это даст мне противоположный результат, который я хотел бы иметь, он возвращает 'cars'.'id' (2,5) – alisongaleon

+0

означает, что вы хотите для получения результата, когда статус равен 1? –

+0

Извините, я не был здесь ясен, я имею в виду, что это покажет мне список 'cars', которые являются' status' <> 1, в этом случае только 'cars'.'id' (1), я также хочу другие перечислены в качестве результата, даже если они не находятся в таблице 'bookings' – alisongaleon

1

Этот будет показывать только автомобили

SELECT c.name FROM `cars` as `C` INNER JOIN `bookings` AS 
    `B` ON `C`.`id` = `B`.`id` where `B`.`status` != 1 
0

попробовать этот

SELECT * FROM `cars` C, `bookings` B WHERE C.id=B.car_id AND B.status!=1 
0

Попробуйте это ...

SELECT * FROM cars C LEFT JOIN bookings B ON C.id = B.car_id WHERE B.status <> 1 
+0

, он будет показывать только автомобили, указанные в таблице бронирования. например, car.id 6, не будет отображаться по результату, потому что у него нет заказов.car_id 6. – alisongaleon

0

Если предположить, что car_id из вашей bookings таблицы тот же столбец как id в cars таблице ...

SELECT A.* from cars A 
inner join bookings B on A.id=B.car_id 
where b.status<>1; 
0

решаемые ИТ с этим запрос

SELECT * FROM `cars` WHERE `id` NOT IN (SELECT `B`.`car_id` FROM `cars` AS `C` INNER JOIN `bookings` AS `B` ON `C`.`id` = `B`.`car_id` WHERE `B`.`status` = 1) 

спасибо всем, это помогло ALOT от ваших ответов

0
SELECT A.* , B.* FROM cars A, bookings B WHERE B.car_id=A.id AND B.status <> 1 
Смежные вопросы