我遇到了一些SQL查询。
我有四张桌子。哪些是连接的:
用户 => user_account => acount_profile_entries => profile_entries
从左到右,他们是一对多。
user_account 的user_id字段为FK。 account_profile_field 包含 user_account_id 和 profile_entry_id 。 Profile_entries有一个我需要为每个用户(帐户)显示的文本字段。
我需要编写一个查询,告诉我,每个用户的所有帐户及其个人资料条目。
如果这令人困惑,我很抱歉,我试着让它变得简单
这是我到目前为止所做的。我可以显示每个用户的所有帐户,这是我坚持的点。最后两个注释掉联接不能正常工作。我相信我有点接近,我只需要推动:)
SELECT
u.email AS Email,
u.id AS UserId,
ua.id AS UserAccountId,
ua.app_id AS Application
FROM users AS u
INNER JOIN user_accounts ua ON ua.user_id = u.id
-- INNER JOIN account_profile_entries ape ON ape.user_account_id = ua.id
-- INNER JOIN profile_entries as pe ON pe.id = ape.profile_entry_id
limit 10
答案 0 :(得分:3)
描述: - MySQL LEFT JOIN连接两个表并根据条件获取行,这两个表在两个表中匹配,并且在JOIN之前写入的表中也可以获得不匹配的行子句。
SYNTAX
SELECT column_name(s)
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;
SELECT u.*,
u.id AS UserId,
ua.id AS UserAccountId,
ua.app_id AS Application,pe.* FROM `users` u
LEFT JOIN user_accounts ua ON ua.user_id = u.id
LEFT JOIN account_profile_entries ape ON ape.user_account_id = ua.id
LEFT JOIN profile_entries as pe ON pe.id = ape.profile_entry_id LIMIT 10