SQL Выберите данные из таблицы, когда дата либо указана, либо пуста

0

Я хочу выбрать данные из моей базы данных, когда конкретный столбец в таблице содержит определенные данные или не заполняется. вот мой код sql:

SELECT
bus.bus_id,
bus.seats,
entity.entityid,
entity.company_name,
entity.logo AS companylogo,
route.start_point,
route.drop_point,
route.boarding_time,
route.arrival_time,
FROM
loading_buses
INNER JOIN bus ON loading_buses.bus_id = bus.bus_id
INNER JOIN route ON loading_buses.route_id = route.route_id
INNER JOIN entity ON bus.entity = entity.entityid AND route.entity_id = 
entity.entityid
WHERE
loading_buses.'current_date' ='23/1/2018' OR
loading_buses.'current_time' >= '00:00' AND
route.start_point = 'accra' AND
route.drop_point = 'kumasi'
ORDER BY
route.price ASC

И это мой вывод

SQL OUTPUT

1   49  1   STC assets/images/stc.png   accra   kumasi  1/17/2018 20:00 1/18/2018 00:00 20          9/18/2017   7/18/2017
2   15  1   STC assets/images/stc.png   accra   kumasi  1/17/2018 20:00 1/18/2018 00:00 20          9/18/2017   7/18/2017
3   55  1   STC assets/images/stc.png   accra   kumasi  1/17/2018 20:00 1/18/2018 00:00 20          9/18/2017   7/18/2017

В моей базе данных текущая дата столбца имеет определенную дату, которая должна отображаться в зависимости от установленной даты или отсутствия даты в столбце, она должна отображаться. Итак, в заключение, результат запроса показывает только данные для указанной даты и null. Но Query отображает все данные в таблице

  • 0
    MySQL или sql-сервер?
  • 0
    Это MySQL не sql-сервер
Показать ещё 3 комментария
Теги:

3 ответа

-1
Лучший ответ

Вы должны использовать() для группировки своих OR:

WHERE
(loading_buses.'current_date' ='2018-01-23' OR loading_buses.'current_date'  is null)
AND
route.start_point = 'accra' AND
route.drop_point = 'kumasi'
  • 0
    мне нужно какое-то объяснение
  • 0
    Не уверен, как я могу объяснить это лучше, чем я уже сделал. Я даже дал вам рабочий пример.
Показать ещё 7 комментариев
0

если вы хотите проверить значение null, вы должны использовать null

WHERE  loading_buses.'current_date' ='23/1/2018' OR
     loading_buses.'current_time'  is null

Или на основе вашего комментария вы можете использовать

WHERE  loading_buses.'current_date' ='23/1/2018' AND
     loading_buses.'current_time'  is null
  • 0
    Я хочу проверить, имеет ли loading_buses.current_date значение «23/1/2018», а также loading_buses.current_date имеет значение null
  • 0
    ответ дополнен условием и на основе вашего комментария
0

current_date используется как ключевое слово для определения системной даты во многих базах данных. Поэтому, пожалуйста, убедитесь, что это не так.

current_date= '23/1/2018 '--- Измените значение даты в этом состоянии и посмотрите, все ли он возвращает все данные.

Кроме того, закомментируйте это условие --- loading_buses. current_time > = '00: 00 ', поскольку все строки удовлетворяют этому условию.

  • 1
    Ответ @sskoko решил, я просто хотел, чтобы конкретные данные были основаны на дате в предложении where и если coulmn равно Null или пусто

Ещё вопросы

Сообщество Overcoder
Наверх
Меню