|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
Есть 2 справочника. Нужно создать третью таблицу - все записи из одной таблицы со всеми записями из второй. У каждой такой записи будет дополнительное поле - показывать или нет. Например, первый справочник - брэнды, второй справочник - города. Нужна третья таблица связи бренд-город - показывать его или нет. То есть в первом справочнике 3 записи, во втором - 12, нужно создать третью таблицу из 3*12=36 записей со всеми вариантами комбинаций. Ессно, первый столбец - форейн кей на первый справочник, второй - форейн кей на 2 справочник, 3 поле - показывать его или нет (есть в этом городе такой бренд или нет. Пробовал JOIN-ами это решить - не хватает знаний для этого. даже чтоб сформировать вопрос гуглю - это матрицы? спасибо за готовое решение сразу с инсертом в 3-ю таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 21:18 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
Все, допетрил, CROSS JOIN спасет отца русской демократии ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 21:29 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
GrigoriyFomin, SELECT FROM БРЕНДЫ, ГОРОДА ... |
|||
:
Нравится:
Не нравится:
|
|||
21.08.2021, 21:50 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
GrigoriyFomin, Обычное декартово произведение даст тебе все комбинации. YouRock уже ответил. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 15:21 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
Так ТС сам "допетрил", что отца русской демократии спасет CROSS JOIN, так как здесь четко и однозначно говорится о декартовом произведении. Конструкция "SELECT FROM БРЕНДЫ, ГОРОДА" в этом случае явно неудачная, так глядя на нее не понятно, здесь действительно идет речь о декартовом произведении или просто забыли о WHERE. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 22:01 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
Wlr-l глядя на нее не понятно, здесь действительно идет речь о декартовом произведении или ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 22:50 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
Wlr-l Конструкция "SELECT FROM БРЕНДЫ, ГОРОДА" в этом случае явно неудачная Wlr-l так глядя на нее не понятно, здесь действительно идет речь о декартовом произведении или просто забыли о WHERE при CROSS JOIN можно так же "напихать" условий в WHERE и превратить его в INNER JOIN ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 22:57 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
YuRock Вообще-то это по стандарту так. https://blog.mclaughlinsoftware.com/oracle-sql-programming/basic-sql-join-semantics/SQL JOIN Concepts: A table is an array of arrays, which means a row in any table contains an array. The definition of a table defines the data structure of a row or array. Selection is the process of identifying, accessing, and joining data into return data sets. The basic elements of selection in a SQL statement are the FROM and WHERE clauses. The ANSI 89 syntax uses a cross join or comma-delimited list of tables, and places the join in the WHERE clause. The ANSI 92 syntax uses a set of key words like INNER JOIN, LEFT JOIN, et cetera, and puts the join in an ON or USING clause, which are often referred to as subclauses. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 23:02 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
court YuRock Вообще-то это по стандарту так. https://blog.mclaughlinsoftware.com/oracle-sql-programming/basic-sql-join-semantics/SQL JOIN Concepts: A table is an array of arrays, which means a row in any table contains an array. The definition of a table defines the data structure of a row or array. Selection is the process of identifying, accessing, and joining data into return data sets. The basic elements of selection in a SQL statement are the FROM and WHERE clauses. The ANSI 89 syntax uses a cross join or comma-delimited list of tables, and places the join in the WHERE clause. The ANSI 92 syntax uses a set of key words like INNER JOIN, LEFT JOIN, et cetera, and puts the join in an ON or USING clause, which are often referred to as subclauses. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 23:12 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
court, Конструкция "SELECT FROM таблица1, таблица2" неудачная или устаревшая? Не в этом суть. Первая мысль при виде такой конструкции: "где же WHERE?". Вспомним, не говоря об этом вслух, сколько раз в своей жизни мы выполнили DELETE без WHERE? Если кто-то сказал, что ни разу, то у него все еще впереди. Последствия такой ошибки проявятся практически сразу. При SELECT последствия могут быть обнаружены не сразу, т.е. ошибка может быть длительное время оставаться незамеченной. Поэтому в таком коде без комментариев не обойтись. " при CROSS JOIN можно так же "напихать" условий в WHERE и превратить его в INNER JOIN " К счастью, в CROSS JOIN запретили предложение ON, к несчастью, о WHERE скорее всего забыли. Да, можно напихать, но если встречается конструкция CROSS JOIN ... WHERE, то это говорит о том, что 1) стандарт нуждается в пересмотре в части правил соединения таблиц и 2) программист еще не освоил соединение таблиц. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 12:07 |
|
Создать таблицу всех комбинаций из двух справочников
|
|||
---|---|---|---|
#18+
YuRock, В стандарте ANSI 92 появились конструкции соединения таблиц, которые существенно повысили наглядность текста запросов и значительно уменьшили вероятность появления ошибок соединения таблиц. С тех пор прошло почти три десятилетия. Не нужно держаться за то, что потенциально может привести к ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 12:10 |
|
|
start [/forum/topic.php?fid=40&fpage=4&tid=1559955]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 157ms |
0 / 0 |