Выбрать по одному значению?

Тема в разделе "Базы данных", создана пользователем new_forward, 24 апр 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    Доброго времени суток!
    Как выбрать по одному значению из столбца item_id c учетом юзера user_id...
    Пишу вот так:
    Код:
    $qry2="SELECT * FROM add_bids WHERE user_id = '".$user_id."'";
    но этот запрос вытягивает все, а надо например юзер 117 и вот для него item_id 137 аж три штуки а одну 137-ю вытащить...:confused:
     

    Вложения:

    • screen.png
      screen.png
      Размер файла:
      29,5 КБ
      Просмотров:
      17
  2. noskain

    noskain Писатель

    Регистр.:
    21 апр 2010
    Сообщения:
    7
    Симпатии:
    0
    $qry2="SELECT * FROM add_bids WHERE user_id = '".$user_id."' order by cat_id desc limit 1";
     
  3. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    Так выводит одну строку потому как наверно limit 1 :confused:
     
  4. noskain

    noskain Писатель

    Регистр.:
    21 апр 2010
    Сообщения:
    7
    Симпатии:
    0
    ну правильно вначале сортируешь, чтобы получить максимальный id, а он в примере 137, и limit 1 для того, чотбы получить одну строку, судя по вопросу ты хотел именно одну, или?
     
  5. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    Вцелом не одну, я имел ввиду по одной из item_id 137, 124, 125 в которых есть 117 user_id потому как 137-х item_id аж 3 штуки...


    Другими словами из скрина который я прикрепил должны выйти 3 строчки по item_id 137, 124, 125...:)
     
  6. noskain

    noskain Писатель

    Регистр.:
    21 апр 2010
    Сообщения:
    7
    Симпатии:
    0
    тогда как то с суб селектом можно попробовать

    SELECT * FROM add_bids а where
    a.user_id = '".$user_id."' AND a.cat_id IN
    (select max(b.cat_id ) from add_bids b
    where b.user_id = '".$user_id."' )
     
  7. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    Не получается у меня так, ошибку выдает...Сделал через 2 цикла с функцией array_unique которая удаляет дубликаты из массива...:yahoo:

    Всем спасибо!
     
  8. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Для удаления дублирующихся строк в выборке используется слово DISTINCT

    Код:
    $qry2="SELECT [FONT=Courier New]DISTINCT [/FONT]* FROM add_bids WHERE user_id = '".$user_id."'";
     
  9. new_forward

    new_forward

    Регистр.:
    5 май 2008
    Сообщения:
    668
    Симпатии:
    44
    DISTINCT удаляет все дублирующиеся строки если значения совпадают хотя бы в одной ячейке?
     
  10. shvonder_85

    shvonder_85 Создатель

    Регистр.:
    3 май 2010
    Сообщения:
    12
    Симпатии:
    3
    Удаляет, если в строках совпадают все значения (во всех ячейках)
     
Статус темы:
Закрыта.