Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / JOIN с уникальной строкой из правой таблицы / 10 сообщений из 10, страница 1 из 1
18.08.2010, 15:57
    #36798154
pixx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
Здравствуйте, уважаемые завсегдатаи форума!
В ходи изучения SQL возник такой вопрос.
Есть две таблицы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
A: id, name, theme_id
 1  | foo |  2 
 2  | bar |  2 
 3  | boo |  1 

B: id, link, theme_id
 1  | ff.ru  |  2 
 3  | aa.ru |  2 
 5  | bb.su |  3 

Запрос:
Код: plaintext
1.
2.
SELECT *
FROM A LEFT JOIN B ON A.theme_id=B.theme_id
GROUP BY A.id

Дает результат
Код: plaintext
1.
2.
 1  | foo |  2  |  1  | ff.ru |  2 
 2  | bar |  2  |  1  | ff.ru |  2 
 3  | boo |  1 | NULL | NULL | NULL

Вопрос: как объединить каждую строку таблицы А только со одной уникальной строкой из таблицы B по параметру theme_id
То есть, чтобы в результате строка B.id=1 не объединилась два раза со строками A.id IN(1,2), а был такой результат:
Код: plaintext
1.
2.
 1  | foo |  2  |  1  | ff.ru |  2 
 2  | bar |  2  |  3  | aa.ru |  2 
 3  | boo |  1  | NULL | NULL | NULL

Что-то вроде придания полю B.id в результирующей выборки ключа UNIQUE
...
Рейтинг: 0 / 0
18.08.2010, 15:59
    #36798165
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
рекомендую обратиться в форум по Вашей СУБД
т.к. к проектированию БД тема не относится
...
Рейтинг: 0 / 0
18.08.2010, 16:05
    #36798186
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
pixx , как вариант построить полный декартов квадрат таблиц, а потом исключить ненужные строки...

Только каким боком это к проектированию БД?
...
Рейтинг: 0 / 0
18.08.2010, 20:49
    #36798849
pixx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
Я просто не нашел раздела для вопросов по SQL. По сути моя задача относится более к вопросу проектирования базы (возможно при проектировании ошибка), чем к какой-то реализации СУБД.
...
Рейтинг: 0 / 0
18.08.2010, 20:50
    #36798851
pixx
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
krvsa pixx , как вариант построить полный декартов квадрат таблиц, а потом исключить ненужные строки...

А как исключить так, чтобы в столбце B.id были только уникальные значения?
...
Рейтинг: 0 / 0
19.08.2010, 08:40
    #36799204
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
pixxА как исключить так, чтобы в столбце B.id были только уникальные значения?
Для приведёного примера достаточно к селекту приписать дистинкт. Потом убрать остальные "лишние" строки другими условиями...

Но это уж точно не проектирование БД.
...
Рейтинг: 0 / 0
19.08.2010, 11:48
    #36799697
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
pixxВопрос: как объединить каждую строку таблицы А только со одной уникальной строкой из таблицы B по параметру theme_id
То есть, чтобы в результате строка B.id=1 не объединилась два раза со строками A.id IN(1,2), а был такой результат
Сперва ты должен определить условие по которому строка с B.id=1 не должна объединяться два раза со строками A.id IN(1,2), а потом уже как написать это условие будет дело техники.
...
Рейтинг: 0 / 0
19.08.2010, 11:58
    #36799729
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
pixxЯ просто не нашел раздела для вопросов по SQL.А я и не говорил, что Вам нужно искать такой раздел
Я говорилПаганельрекомендую обратиться в форум по Вашей СУБД
...
Рейтинг: 0 / 0
19.08.2010, 11:59
    #36799734
Паганель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JOIN с уникальной строкой из правой таблицы
pixxПо сути моя задача относится более к вопросу проектирования базыТак, как Вы ее описали - нет
Опишите, пожалуйста, по-другому, со схемой данных, с описанием природы данных, которые необходимо хранить...
В общем, как принято описывать задачи по проектированию БД

(жаль нету на этом форуме чего-то похожего на "Рекомендации по оформлению сообщений",
как на форуме по MS SQL...)
...
Рейтинг: 0 / 0
24.08.2010, 14:45
    #36808178
JOIN с уникальной строкой из правой таблицы
Код: plaintext
1.
2.
3.
SELECT *
FROM A LEFT JOIN B ON A.theme_id=B.theme_id
GROUP BY A.id
Врёте, дорогой, ваш запрос работать не может. По правилам SQL в списке SELECT сгруппированного запроса могут буть указаны лишь столбцы из списка группировки и вычисляемые на группе столбцы (с функциями типа MAX, MIN, SUM и т.д.) А у вас звёздочка (*) написана, да ещё и в результате якобы 5 столбцов. Брехня.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / JOIN с уникальной строкой из правой таблицы / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]