2013-06-08 2 views
0

Мне нужно создать представление с данными из двух разных таблиц.MySQL View с данными из двух таблиц

я попытался это:

CREATE VIEW `moviesdatastore`.`view_user_group` AS 
SELECT user_name FROM tbl_spj_user, 
SELECT group_name FROM tbl_spj_group; 

Но это приводит:

ERROR 1349: View's SELECT contains a subquery in the FROM clause 

Cant увидеть, где подзапрос .....

Как я создать представление данных из двух разных таблиц? Мне нужно это для JAAS на моем веб-приложении Java.

ответ

1

Вы можете использовать union

CREATE VIEW `moviesdatastore`.`view_user_group` AS 
(
    SELECT user_name AS name FROM tbl_spj_user 
) 
UNION ALL 
(
    SELECT group_name AS name FROM tbl_spj_group; 
) 

Обратите внимание, что вы не будете знать, какие записи приходят из групп и которые приходят от пользователей. Если вам необходимо дифференцировать от того, добавить еще один столбец в представлении с типом, например:

CREATE VIEW `moviesdatastore`.`view_user_group` AS 
(
    SELECT user_name AS name, 'user' AS type FROM tbl_spj_user 
) 
UNION ALL 
(
    SELECT group_name AS name, 'group' AS type FROM tbl_spj_group; 
) 
1

, если вы можете присоединиться к таблицам, то присоединиться должны быть лучше, чем союз

CREATE VIEW `moviesdatastore`.`view_user_group` AS 
SELECT 
user_name 
FROM tbl_spj_user 
INNER JOIN tbl_spj_group ON tbl_spj_group.groupID=tbl_spj_user.groupID 
+0

сво M: N Relationshipt между пользователем и группой – Mulgard

+0

если это т: п отношение, которое должно работать нормально – sd1sd1

1

может быть join - это то, что вы хотите.

CREATE VIEW `moviesdatastore`.`view_user_group` AS 
SELECT A.user_name, B.group_name 
FROM tbl_spj_user A 
LEFT JOIN tbl_spj_group B ON A.group_id = B.id; 
+0

сво M: N Relationshipt между пользователем и группой – Mulgard

Смежные вопросы