Как объединить две таблицы в SQL? - PullRequest
0 голосов
/ 25 августа 2018

У меня есть две таблицы category & sub_category

category> cat_id, category_name, cat_status

sub_category> sub_cat_id, cat_name, sub_cat_name, sub_cat_status

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

SELECT category.category_name, category.cat_status
from category full OUTER join sub_category on category.category,
    category.cat_status, sub_category.cat_name,
    sub_category.sub_cat_name, sub_category.sub_cat_status

Я получаю эту ошибку:

1064 - у вас есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с «Подкатегория OUTER join в категории.категории, category.cat_status, sub_categor» в строке 3

Ответы [ 2 ]

0 голосов
/ 25 августа 2018

ОК, так как cat_name в sub_category соответствует category_name в category, вы, скорее всего, ищете:

SELECT *
       FROM category
            FULL JOIN sub_category
                      ON sub_category.cat_name = category.category_name;

Но вы не должны хранитьтакие данные. Вместо того, чтобы иметь название суперкатегории в таблице подкатегории, вы должны хранить там идентификатор суперкатегории.

0 голосов
/ 25 августа 2018

Все зависит от цели.Существует 4 типа JOIN: левое соединение, внутреннее соединение, правое соединение и полное соединение.Обычно, когда вы используете какой-либо из них, это происходит потому, что вы хотите различать те записи, которых нет в двух таблицах.Например, если у меня есть две таблицы: студент и выпускник.Будут данные, которые являются двумя таблицами, которые находятся в Студенте и не в Выпускном или которые находятся в Выпускнике и не Студенте.Тогда вы можете сделать.Оставьте JOIN, чтобы найти те, которые находятся в двух таблицах, и добавьте те записи, которые НЕ в выпускном, а ДА в ученическом.Внутренний JOIN, чтобы найти только те записи, которые находятся в двух таблицах, то есть те, которые находятся только в таблице, будут различаться.Право JOIN, то же самое, что LEFT JOIN, но с другой таблицей и Full JOIN не различает вообще.

Теперь, чтобы применить действительный критерий, вы должны выбрать поля, которые, как вы знаете, выглядят в двух таблицахСамым простым является идентификатор.В случае, Студент и Выпускник могут быть номером документа о личности человека.

В вашем случае, я полагаю, что критерием является cat_id и sub_cat_id.

Select category.*, sub_category.* 
       From category inner join sub_category 
       on category.cat_id = sub_category.sub_cat_id;
...