За последние 24 часа нас посетили 21625 программистов и 1033 робота. Сейчас ищут 707 программистов ...

Если SELECT вернул пустую строку\значение то вывести 0

Тема в разделе "MySQL", создана пользователем Naykon, 5 апр 2022.

  1. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    Здравствуйте
    Код (Text):
    1. SELECT ord1.steamid, ord2.steamid
    2. FROM
    3. (
    4.     SELECT steamid FROM stats WHERE steamid='[U:1:1111111111]' GROUP BY steamid
    5. ) ord1,
    6. (
    7.     SELECT steamid FROM stats WHERE  steamid='[U:1:22222222]' GROUP BY steamid
    8. ) ord2
    Если в 2'м или 3'тьем SELECT вернет пустую строку то 1'й SELECT вернет тоже пустые строки не смотря на то что в другом SELECT все же были данные..

    Если в SELECT ord1 нет данных, то пусть показывает тот ord в котором они есть... но этого не происходит.. почему так? Замечу если в 2 и 3 SELECT есть данные то 1 SELECT показывает нормально.. но когда в каком-то их нет то не показывает даже тот в котором они есть.

    Под пустой строкой я имею введу - НЕТ ДАННЫХ
     
    #1 Naykon, 5 апр 2022
    Последнее редактирование: 5 апр 2022
  2. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
    Напишу совсем уж просто:

    SELECT guard FROM stats WHERE end >= 1648370396 AND steamid='[U:1:120835837]' GROUP BY steamid

    вот запрос, в таблице нет уникальных значений, если условие end >= 1648370396 AND steamid='[U:1:120835837]' не выполнится то SELECT выведет пустую строку (ничего) а нужно чтоб он выводил 0 если нет совпадения по условию.
     
  3. Drunkenmunky

    Drunkenmunky Активный пользователь

    С нами с:
    12 авг 2020
    Сообщения:
    1.476
    Симпатии:
    281
  4. Naykon

    Naykon Активный пользователь

    С нами с:
    15 ноя 2015
    Сообщения:
    65
    Симпатии:
    0
  5. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    Например:
    Код (SQL):
    1. SELECT IF(COUNT(*), guard, 0) FROM stats WHERE END >= 1648370396 AND steamid='[U:1:120835837]' GROUP BY steamid
    --- Добавлено ---Так-то поля, не входящие в перечень, по которым выполняется группировка могут принимать неожиданные значения...
    Или СУБД ошибку выдаст.
    --- Добавлено ---
    Могут помочь так-же left join, right join, outer join...
    Каждый - для своего случая объединения таблиц
     
  6. Павел Голубцов

    Павел Голубцов Активный пользователь

    С нами с:
    4 мар 2019
    Сообщения:
    183
    Симпатии:
    4
    Что бы вам помочь не понятно почему 2 ордера и кто к чему относится поэтому когда проектируете СУБД или учится думать логически