За последние 24 часа нас посетили 17767 программистов и 1627 роботов. Сейчас ищут 1240 программистов ...

Изучаем SQL

Тема в разделе "Прочие вопросы по PHP", создана пользователем Goryn, 9 июн 2006.

  1. Goryn

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

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Прочитав несколько тем в этом разделе, я убедился в том, что (извините) причина каких-либо неудач - это незнание SQL(это относится и к MySql и MsSql и к Oracle) и PHP тут нипричем. Я конечно не самый крутой программер на Sql, но если будут вопросы обращайтесь, помогу чем смогу :D
     
  2. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    философским рассуждениям в том форуме не место :)
     
  3. Hight

    Hight Старожил
    Команда форума Модератор

    С нами с:
    5 мар 2006
    Сообщения:
    7.153
    Симпатии:
    0
    Адрес:
    из злой параллельной вселенной
    структурированный язык запросов уже затем учить следует, что он ум в порядок приводит )))

    " М.В. Ломоносов "
     
  4. olo

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

    С нами с:
    28 апр 2006
    Сообщения:
    272
    Симпатии:
    0
    Вот на мой взгляд интересная задачка (сам решить не смог, не знаю даже, есть ли решение)
    Дана таблица, в ней у каждой записи есть уникальный id. Дано некое число, нужно составить запрос, который вернет первый id больше этого числа, которого НЕТ в таблице. Пример: идут записи
    1 -------------
    2 -------------
    4 -------------
    6 -------------
    7 -------------
    9 -------------
    QUERY(6) = QUERY(7) = 8

    Желательно сделать именно запрос, а не хранимую процедуру
     
  5. simpson

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

    С нами с:
    11 фев 2006
    Сообщения:
    1.650
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Код (Text):
    1. SELECT (b.id+1) AS need FROM table AS a RIGHT JOIN table AS b ON (a.id-1)=b.id WHERE a.id IS NULL ORDER BY need ASC LIMIT 1
     
  6. Mavir

    Mavir Guest

    simpson
    Классно. Надо запомнить :)
    Только чтобы выдавало значение больше некоторого значения надо еще немного модифицировать
    Код (Text):
    1. SELECT (b.id+1) AS need FROM table AS a RIGHT JOIN table AS b ON (a.id-1)=b.id WHERE a.id IS NULL  AND b.id>=6 ORDER BY need ASC LIMIT 1
    Запрос получен экспериментально, поэтому может я не правильно указал условие. :)
     
  7. Goryn

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

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Извините за долгое отсутствие, предлагаю другоой SQL запрос :D

    Select Min(a.mi) from(
    select id+1 mi
    from table
    Where id >= константа1) a where
    a.mi not in
    (select id
    from table
    Where id > константа1)

    Проверено под Oracle и MsSql.