За последние 24 часа нас посетили 18465 программистов и 1606 роботов. Сейчас ищут 1246 программистов ...

Помогите сделать с двух один запрос

Тема в разделе "MySQL", создана пользователем psyh, 25 авг 2009.

  1. psyh

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

    С нами с:
    25 авг 2009
    Сообщения:
    7
    Симпатии:
    0
    Таблицы:
    ---t1---
    - uid
    - qid
    --------
    ---t2---
    - qid*
    - ...
    --------

    uid - (могут быть одинаковые)
    qid - (могут быть одинаковые)
    Задача: По известному $uid нужно выбрать из t2 все t1.qid запросы при каждом t1.qid = t1.uid

    Тоесть другими словами, есть одна таблица с двумя полями, в одном записаны пользователи, в другом их любимые цитаты (что-то типа userID=quotеID). Во второй таблицы размещаются эти цитаты с ключом quotеID.
    Теперь нужно показать все любимые цитаты данного пользователя.

    помогите составить запрос одной строчкой, а то всё уже пересмотрел, факи, форум, SQL, вообщем не могу никак составить(
     
  2. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    [sql]SELECT * FROM t1
    LEFT JOIN t2 on t1.qid=t2.qid
    [/sql]
    типа того
     
  3. psyh

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

    С нами с:
    25 авг 2009
    Сообщения:
    7
    Симпатии:
    0
    Ну да, он выведет все цитаты всех пользователей которые есть в первой таблицы. Так у меня и выходило( А мне нужно конкретного пользователя.
     
  4. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    where t1.uid = "номер"
     
  5. psyh

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

    С нами с:
    25 авг 2009
    Сообщения:
    7
    Симпатии:
    0
    Пасиба вам, хороший человек))) Пока всё работает как нужно)))
    У меня ещё один вопросик. Можно ли получить количество записей в таблице, не загружая их клиенту? Ну не буду же я делать mysql_num_rows при количестве записей в пару кк %\
     
  6. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
  7. psyh

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

    С нами с:
    25 авг 2009
    Сообщения:
    7
    Симпатии:
    0
    Понятно, будем знать... Так, а теперь нужно совместить эти два запроса:

    "SELECT COUNT(*) FROM table";
    "SELECT * FROM table WHERE type = 'post' ORDER BY release_date DESC LIMIT $page,10";

    Например мне нужно загрузить 10 записей из 150, но общее количество нужно знать.
     
  8. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    psyh
    это делается нормально двумя запросами
     
  9. psyh

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

    С нами с:
    25 авг 2009
    Сообщения:
    7
    Симпатии:
    0
    А это не будет лишний напряг для базы?
     
  10. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    да нормально все.

    Запрос 1: получаешь количество всех записей [которые удовлетворяют условиям, если такие есть]
    считаешь limit, offset через пагинатор
    Запрос 2: получаешь нужные для тебя записи с limit, offset
    выводишь их
    выводишь странички
     
  11. psyh

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

    С нами с:
    25 авг 2009
    Сообщения:
    7
    Симпатии:
    0
    А теперь по русски можно?)))) Что такое этот нагибатор?
     
  12. Koc

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

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  13. psyh

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

    С нами с:
    25 авг 2009
    Сообщения:
    7
    Симпатии:
    0
    Ох... это "чудо" ( (с)dark-demon) для меня труднопонимаемое...