SQL-запрос для выбора из нескольких таблиц и создания третьей таблицы

Может ли кто-нибудь помочь мне с SQL-запросом? Приношу свои извинения, если подобный вопрос уже задавался ранее. Находить это трудно из других примеров, которые я видел.

У меня есть 2 таблицы и я хотел бы создать третью таблицу.

Таблица - рекомендации

advID | productName         
    1 | 3.4/3.5/3.6
    2 | 3.4
    3 | 3.5/3.6

Таблица - клиентA

hostname | version      
A        | 3.3
B        | 3.5
C        | 3.6

Финальный стол

hostname | advID    
A        | NULL
B        | 1
B        | 3
C        | 1
C        | 3

Это выглядит правильно?

select advId, productNames, hostname, version 
from advisories, customerA
where productNames 
like '%3.6%';

Спасибо за помощь.

Никогда не используйте запятые в FROM, если вы хотите перекрестное соединение, используйте cross join

HoneyBadger 14.12.2020 11:24

не могли бы вы привести пример?

omz 14.12.2020 11:26

Предоставьте MRE, как описано в вики-информации для второго тега, который вы использовали. stackoverflow.com/tags/sqlite/info

Yunnosch 14.12.2020 11:30

Это неподходящая модель данных. Не храните несколько значений в одной строке, если вас интересуют отдельные значения. Что касается вашего запроса: соединения, разделенные запятыми (from advisories, customerA), являются пережитком 1980-х годов. Вместо этого используйте явные соединения. Вам понадобится внешнее соединение (покажите клиентов и их рекомендации, если они есть), что-то вроде from customerA c left join advisories a on a.productname like '%' || c.version || '%'. Но это имеет проблемы. Например, like '%3.6%' соответствует 3.65 и 13.6. Исправьте модель данных. Только после этого пишите запрос.

Thorsten Kettner 14.12.2020 11:32

@ThorstenKettner Пожалуйста, подумайте над тем, чтобы ответить. (Или, может быть, позвольте «свежим и амбициозным» участникам превратить ваш комментарий в ответ.)

Yunnosch 14.12.2020 11:33

@Yunnosch: Продолжайте :-) В данный момент у меня нет времени, чтобы написать ответ. Если вы (или кто-либо в этом отношении) хотите сделать это, сделайте это, пожалуйста.

Thorsten Kettner 14.12.2020 11:39

Спасибо. Однако не обязательно обо мне, я думал о других (и, возможно, о себе....).

Yunnosch 14.12.2020 11:40

Спасибо всем за указатели. Я создал скрипт SQL, если это поможет ответить. sqlfiddle.com/#!9/ae36bae/11

omz 14.12.2020 12:20
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
8
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я бы предложил использовать LIKE в JOIN следующим образом:

SELECT C.HOSTNAME,
       A.advisoryId
  FROM customerA C LEFT JOIN advisories A
ON CONCAT('/',A.productNames,'/') LIKE concat('%/',C.version,'/%')
order by C.HOSTNAME

См. Скрипт SQL. Я изменил функцию || на CONCAT.

Большое спасибо .. не могли бы вы использовать скрипку SQL, чтобы ответить? sqlfiddle.com/#!9/ae36bae/11

omz 14.12.2020 12:21

Проверьте ответ сейчас, с SQL Fiddle

Popeye 14.12.2020 12:32

Другие вопросы по теме