| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Составление SQL-запросов > SQL - две таблицы: юзеры и их друзья |
| Автор: 0xDEAD 22.6.2010, 08:21 | ||||
| Добрый день! У меня есть две таблицы: юзеры, и их друзья, что выглядит примерно так:
Я хочу за раз взять всех юзеров с друзьями, и их друзей. Как мне это сделать одним запросом? Нужно иметь в результате:
Спасибо! |
| Автор: Frees 22.6.2010, 08:35 | ||
в таблице FRIENDS нужен свой первичный ключ friends id | memder_id |name |
| Автор: 0xDEAD 22.6.2010, 09:40 | ||||
В моем случае join почему-то нереально долго думает
причем тормоза наблюдаются только с двумя условиями, если убрать любую, отвечает быстро. Придумал альтернативу:
В отличие от первого почему-то возвращает результат мгновенно. Зачем? |
| Автор: tusha 22.6.2010, 10:04 | ||
может создать некластерный индекс по дате логина? или если база мссскл то сделать эти 2 колонки как инклуд для индекса (или вообще построить кластерный индекс по id, last_login - я так понимаю это таблица аудита - кто когда заходил в систему?) |
| Автор: Gluttton 22.6.2010, 17:57 |
Зачем первичный ключ вообще Я так понимаю в данном случае испльзуется составной первичный ключ? В принципе можно и так, но это накладывает некоторые ограничения, например у одного человека не смогут быть два друга "однофамильца". Хорошо это или плохо зависит от конкретной задачи. |
| Автор: Zloxa 23.6.2010, 09:16 |
До тех пор, пока перед разрабом стоит вопрос "зачем", первичный ключ действительно не нужен. Если бы я бы имел основания полагать что платформа реализации ТС - оракл, я бы присоединился к этому вопросу. В оракле есть http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/pseudocolumns008.htm#SQLRF00254, который позволяет отказаться от ПК для таблиц которые не являются мастером в отношениях, и эти ПК нахрен не нужны как ограничения целостности. |