[sql] Вопросы по БД

Discussion in 'PHP' started by FraiDex, 25 Feb 2008.

Thread Status:
Not open for further replies.
  1. erihtoney

    erihtoney Member

    Joined:
    3 Mar 2009
    Messages:
    91
    Likes Received:
    73
    Reputations:
    20
    Раз уж задумался о памяти, было бы разумнее использовать mysql_fetch_assoc, не забивая память
     
  2. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Здравствуйте!

    В таблице keywords записаны следующий строки:
    i want buy moto
    i want buy new auto
    want i buy motocycle
    buy want i new moto

    Строка-поиск: i want buy

    Возможно ли запросом выбрать все строки, в которых присутствуют слова из исходной строки поиска?

    Обычным
    PHP:
    SELECT FROM keywords WHERE string LIKE '%i want buy%'
    не обойтись, т.к. вернуться только первые две строки, мне нужно вернуть все. Это возможно? Если возможно то как?

    Заранее благодарен!
     
    #822 OnArs, 21 Nov 2009
    Last edited: 21 Nov 2009
  3. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Попробуйте как-нить так
    Code:
    string RLIKE '(^| )i( |$)' 
    AND string RLIKE '(^| )want( |$)' 
    AND string RLIKE '(^| )buy( |$)'
    
     
    1 person likes this.
  4. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Ещё раз здравствуйте!


    В таблице строки:
    id string
    1 я строчкоо
    2 я строчкоо
    1 я строчкоо
    5 я строчкоо
    9 я строчкоо
    19 я строчкоо
    21 я строчкоо


    Нужно получить НОМЕР строки в таблице, т.е. для строки с id = 5 запрос должен вернуть 4

    Возможно ли это? Если да, то как будет выглядеть запрос или в какую сторону копать? :confused:

    Заранее благодарен! :rolleyes:
     
  5. Osip

    Osip New Member

    Joined:
    20 Jan 2008
    Messages:
    14
    Likes Received:
    4
    Reputations:
    0
    mysql_num_rows() ?
     
  6. SaiRus

    SaiRus Elder - Старейшина

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    таблица, три поля:
    - ид (автоинкримент)
    - идф (уникальное)
    - текст

    как заполнять в пхп правильно уникальное поле, разве только генерить число, проверять через цикл есть ли оно в поле "идф", если нет вставлять?что то кажеться как то проще должно быть :)
     
  7. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    PHP:
    if(mysql_query("SQL QUERY")) 
    {
    //Тут действие если успешно добавлено уникальное значение
    echo "Добавлено";
    }else echo 
    "Не добавлено, ключ совпадает";
    ?>
     
  8. SaiRus

    SaiRus Elder - Старейшина

    Joined:
    24 Nov 2008
    Messages:
    369
    Likes Received:
    41
    Reputations:
    0
    2LStr1ke, суть в том что ИД должно автоматом без участия пользователя вводиться, можно конечно проверять первую и последнюю запись и делать соответствующие выводы, а проще не бывает? спасибо за совет
     
  9. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    801
    Likes Received:
    145
    Reputations:
    73
    Если ИД у тебя автоинкремент, то можешь в запросе его не указывать, оно само увеличится на 1
     
  10. L I G A

    L I G A Banned

    Joined:
    27 Jul 2008
    Messages:
    482
    Likes Received:
    380
    Reputations:
    49
    mysql_insert_id()


    __________
    0ph.ru
     
    #830 L I G A, 22 Nov 2009
    Last edited: 10 Dec 2009
  11. DiHWO

    DiHWO Member

    Joined:
    23 Oct 2009
    Messages:
    93
    Likes Received:
    10
    Reputations:
    0
    SaiRus, вот так:
    Code:
    mysql_query("INSERT INTO `your_table` (`id`, `idf`, `text`) VALUES (NULL,'lalala','lalala')")
    
    Тобишь, в месте, где ID, надо писать HULL.
     
    #831 DiHWO, 23 Nov 2009
    Last edited: 23 Nov 2009
  12. Architek86

    Architek86 Elder - Старейшина

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Что означает следующая ошибка:
    ???
    Я так понимаю, это скорее всего проблема хостера?
     
  13. Architek86

    Architek86 Elder - Старейшина

    Joined:
    20 Feb 2008
    Messages:
    80
    Likes Received:
    1
    Reputations:
    0
    Я бы на твоем месте базу немного по иномму бы огранизовал, сделав идф автоинкрементом. Почему? да потому что AUTO_INCREMENT генерирует число, не из соображений "создать новое максимальное число", а из соображений "создать уникальное число"
    UNIQUE же используется для того, дабы, не дай бог, злобный юзверь не внёс в базу то, что уже есть, иначе получишь предупреждение, или же возможность UPDATE старый UNIQUE с помозью команды ON DUPLICATE KEY UPDATE ))). Просто не путайте понятия, и тогда решение задачи станет легче :)
     
    #833 Architek86, 24 Nov 2009
    Last edited: 24 Nov 2009
  14. felix_

    felix_ New Member

    Joined:
    25 Sep 2008
    Messages:
    24
    Likes Received:
    3
    Reputations:
    0
    есть таблица со столбцами id и status
    1 room
    2 flat
    3 room
    4 house
    5 room
    6 house


    как сделать чтоб вывдоилось колличество вхождений от большего к меньшему по стоблцу status, из этой таблици выводится должно
    3 room
    2 house
    1 flat
     
  15. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    SELECT COUNT(*), `status` FROM `mytable` GROUP BY `status` ORDER BY 1 DESC;
    
     
  16. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    есть табличка logins
    Надо вывести логины начинающиеся на букву напимер A
    Используя толкьо SQL запрос (MySQL)

    SELECT * FROM logins WHERE name=????
     
  17. diGriz

    diGriz Elder - Старейшина

    Joined:
    11 Oct 2006
    Messages:
    138
    Likes Received:
    82
    Reputations:
    6
    SELECT * FROM logins WHERE name LIKE 'a%'
     
    1 person likes this.
  18. Scipio

    Scipio Well-Known Member

    Joined:
    2 Nov 2006
    Messages:
    733
    Likes Received:
    544
    Reputations:
    190
    SELECT * FROM logins WHERE left(name,1)='A'
     
    #838 Scipio, 25 Nov 2009
    Last edited: 25 Nov 2009
  19. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    SELECT * FROM `logins` where SUBSTRING(`username`,1,1) = 'A'

    правда тоже регистропох....как и LEFT, гы
     
    #839 Pashkela, 25 Nov 2009
    Last edited: 25 Nov 2009
  20. Большой джо

    Joined:
    28 Jun 2009
    Messages:
    51
    Likes Received:
    2
    Reputations:
    0
    Как в MySql Вывести данные, отсортированные по Primary ключу?
     
Thread Status:
Not open for further replies.