BoySetsFire Ответов: 1

TSQL что-то о таблице соединений и N-m отношениях


Сегодня я " застряну"

У меня есть три таблицы, логически это имя таблиц zwei и комната с отношением n к m.

-Название (Н)

- Объединенный стол

- Комната (n)

Теперь я хочу получить все имена-строки уникальные, где посуда "работает" в комнате x, y и z

Пожалуйста, помогите мне, сегодня я большой идеот ;)


User
UserID	Name	Adress	bla...
a	Max	
b	Peter
c	Ben


Join_User_Room
JoinID	UserID	RoomID
d	a	x
e	a	y
f	a	z
g	b	x
h	b	y
i	b	z


Room
RoomID	Name
x	Room1
y	Room2
z	Room3


Что я уже пробовал:

Left join and right joins and other crazy sql stuff

OriginalGriff

Что именно вы хотите получить из этих данных-из вашего описания не очень понятно.
Может быть, вам поможет пример вывода, который вы пытаетесь получить?

Suvendu Shekhar Giri

Я согласен с @OriginalGriff. JOIN-это не просто соединение с 2 таблицами, а соединение с 2 таблицами для получения некоторых значимых данных.

BoySetsFire

select * from User

join Join_User_Room on UserID	= UserID	
join Room on RoomID = RoomID 

where  RoomID in( X, Y, Z)


теперь результат имеет множество строк. из таблицы join ... но я хочу видеть две строки onley, строку от пользователя a и строку от пользователя b...


Br,

Бенни

OriginalGriff

Итак, покажите нам пример результата, который вы пытаетесь получить, и результат, который вы получаете сейчас.

Bryian Tan

Чтобы продолжить приведенный вами пример, вы можете изменить запрос примерно так, как показано ниже

select DISTINCT u.UserId, u.Name from [User] u
join Join_User_Room jur on u.UserID	= jur.UserID	
join Room r on jur.RoomID = r.RoomID 
where  jur.RoomID in( 'X', 'Y', 'Z')

1 Ответов

Рейтинг:
1

OriginalGriff

Попробовать это:

SELECT u.* FROM [User] u
JOIN (SELECT ju.UserID FROM Join_User_Room ju GROUP BY ju.UserID) jg ON jg.UserID = u.UserID

И когда вы публикуете фрагменты кода (например, ваш SQL), пожалуйста, постарайтесь убедиться, что они работают: это не будет по множеству причин!