Это называется JOIN
:
Существует несколько основных типов объединения, основанных на том, какие именно данные вам нужны.Они связаны с теорией множеств / реляционной алгеброй.Я перечислю наиболее распространенные из них:
INNER JOIN
Используйте это, если вы хотите вернуть каждую возможную комбинацию строк, где обе таблицы имеют совпадающий UserId.Некоторые строки в таблице либо могут не возвращаться во внутреннем объединении.
SELECT * FROM aspnet_AccountProfile INNER JOIN aspnet_Membership
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId
Другой способ написания ВНУТРЕННЕГО СОЕДИНЕНИЯ (который я не рекомендовал бы, если вы хотите понимать объединения)is:
SELECT * FROM aspnet_AccountProfile, aspnet_Membership
WHERE aspnet_AccountProfile.UserId = aspnet_membership.UserId
Конечно, чтобы выбрать конкретный идентификатор пользователя, который вы хотите, вы добавляете условие в таблицу либо , например:
AND aspnet_AccountProfile.UserId = @UserId
ИЛИ
И aspnet_Membership.UserId = @ UserId
Любой из этих двух вариантов будет работать нормально для внутреннего объединения.
СЛЕДУЮЩЕЕ НАРУЖНОЕ СОЕДИНЕНИЕ
Используйте это, если вы хотите вернуть все строк из первой таблицы в вашем запросе и каждую комбинацию, где UserId во второй таблице соответствует первой.Некоторые строки во второй таблице (в данном случае членство) могут вообще не возвращаться.
SELECT * FROM aspnet_AccountProfile LEFT JOIN aspnet_Membership
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId
В этом случае вам нужно использовать левый столбец, чтобы сузить критерии, иначе он автоматически получитпреобразуется во внутреннее соединение.
WHERE aspnet_AccountProfile.UserId = @ UserId
RIGHT OUTER JOIN
Это довольно редко, поскольку обычнозаписывается как левое внешнее соединение.Это похоже на левое внешнее объединение, но вместо первой возвращаются все строки из второй таблицы отношения.
SELECT * FROM aspnet_AccountProfile RIGHT JOIN aspnet_Membership
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId
FULL OUTER JOIN
Используйте этоесли вам нужно связать все строки с соответствующим UserId в AccountProfile с соответствующими строками в Membership, но также необходимо знать, какие строки в таблице или не имеют совпадений в другой.
SELECT * FROM aspnet_AccountProfile FULL OUTER JOIN aspnet_Membership
ON aspnet_AccountProfile.UserId = aspnet_Membership.UserId
Получение результатов только для одного пользователя немного сложнее в FULL OUTER JOIN.Вы должны указать, что NULL или правильное значение допустимо в любой таблице.