Назначьте каждую строку каждой другой строке в другой таблице - PullRequest
0 голосов
/ 21 мая 2019

У меня есть 2 таблицы:

**Table user**
Username

**Table prize**
PrizeName

Как вы можете назначить для каждого приза строки в настольном призе каждому имени пользователя в настольном пользователе ?

Например:

**Username**
Bob
Alice

**table prize**
Iphone5
Iphone6

Результат:

**Username**    **prize**
Bob             iphone5
Alice           iphone5
Bob             iphone6
Alice           iphone6

Ответы [ 5 ]

1 голос
/ 21 мая 2019

Используйте CROSS JOIN.CROSS JOIN вернет все результаты в наборе результатов.Используя ваш пример:

SELECT Name, p.PrizeName FROM dbo. [Пользователь] CROSS JOIN Prize p

Возвращает:

Боб iphone 5 Алиса iphone 5 Боб iphone 6Алиса iphone 6

Захват экрана набора результатов

1 голос
/ 21 мая 2019

Если я вас правильно понимаю, следующее должно дать вам то, что вы хотите:

SELECT Username, Prize
FROM 
user
CROSS JOIN
prize
ORDER BY prize, Username
1 голос
/ 21 мая 2019

Это называется декартовым произведением. Используйте CROSS JOIN.

SELECT *
FROM UserTable UT
     CROSS JOIN PrizeTable PT;
0 голосов
/ 21 мая 2019
INSERT INTO table_User_Prizes
           (Username, PrizeName)
SELECT Table_User.Username,table_Prize.PrizeName
FROM Table_User,table_Prize

Обратите внимание, что если в "table_User_Prizes" больше столбцов, они будут заполнены как NULL.

0 голосов
/ 21 мая 2019

Используйте CROSS JOIN:

select u.username, p.prize
from users u cross join
     prizes p;

Я называю таблицы во множественном числе, потому что они содержат несколько экземпляров сущностей (и множественное число реже конфликтует с ключевыми словами).

Если вы хотите «назначить» их, то вам может понадобиться соединительная таблица. Для этого у вас обычно есть идентификаторы и вы делаете что-то вроде этого:

insert into user_prizes (user_id, prize_id)
    select u.user_id, p.prize_id
    from users u cross join
         prizes p;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...