Мне нужно написать инструкцию SQL из трех таблиц, таблицу с перечислением веб-URL, таблицу с указанием возможных категорий, а затем таблицу URL_Categories. (Подобно классической проблеме SQL/Classes/Enrollment SQL). Сочетание URL и CATEGORY делает URL_CATEGORIES. Один URL может иметь 1 или «X» категории, поэтому в таблице URL_CATEGORY может быть несколько строк, но COMBINATION URL и CATEGORY уникальны в таблице URL_CATEGORY. Применяемые определения CREATE TABLE:SQL - Избегайте декартового продукта
CREATE TABLE URL (
ID AUTOINC,
SOURCE_DATE DATETIME,
SITE VARCHAR(30),
...
); -186 rows
CREATE TABLE CATEGORY (
ID AUTOINC,
CATEGORY_NAME VARCHAR(20),
); -- 9 rows
CREATE TABLE URL_CATEGORIES (
URL_ID INTEGER,
CAT_ID INTEGER,
); - 195 rows
Короче говоря, я хочу видеть все столбцы. Поскольку URL_CATEGORIES имеет 195 строк, мой OUTPUT должен иметь 195 строк. Для каждой строки таблицы URL_CATEGORIES выберите все соответствующие столбцы в таблице URL, где URL_CATEGORIES.URL_ID = URL.ID и все столбцы в таблице CATEGORY, где URL_CATEGORIES.CAT_ID = CATEGORY.ID.
SQL, я использую дает мне 38025 строк, говорит мне, что есть декартово вопрос ... SQL, является
select U1."*", C2."*", U3."*"
from "URL_CATEGORIES" U1
inner join "CATEGORY" C2
on (U1."CAT_ID" = C2."ID"),
"URL_CATEGORIES" U1
inner join "URL" U3
on (U1."URL_ID" = U3."ID")
Я имею в виду, мне нужно подвыбор, чтобы получить строки на 3 таблицы , а не соединение. Как мне переписать мой SQL?
Благодаря
Это сделало это ... одна дополнительная запятая может вызвать много обострения ... LOL – user1009073