Оператор соединения SQL для 2 таблиц

#sql #oracle

#sql #Oracle

Вопрос:

я создаю соединение между двумя таблицами Product_Tree и Product для двух столбцов Model_Number и Manufacturer, чтобы вернуть соответствующие столбцы.

Вот 2 таблицы:

Таблица: Product_Tree

 Col1,Col2,Model_Number,Col3,Manufacturer,Col4
111111,Pepsi,aaa,111111,aaa,description
222222,Miranda,bbb,222222,bbb,'description
333333,Cola,bbb,333333,bbb,description
  

Таблица: Продукт

 Model_Number,Manufacturer
a,a
b,b
c,c
d,d
  

Вот запрос:

 SELECT Product_Tree.col0,Product_Tree.col1,Product_Tree.col2,Product_Tree.col3,Product_Tree.Model_Number,Product_Tree.Manufacturer 
FROM Product_Tree 
JOIN Product ON Product.model_number LIKE ''''%''''Product_Tree.MODEL_NUMBER''''%'''' 
AND Product.manufacturer LIKE ''''%''Product_Tree.MANUFACTURER''''%'''';
  

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

 ORA-00911: invalid character
  

Комментарии:

1. Почему это помечено как mysql ?

2. Как это связано с «UNIX»?

Ответ №1:

Вам нужно будет использовать оператор конкатенации для объединения вашего % подстановочного знака с вашим столбцом product_tree.manufacturer :

 SELECT Product_Tree.col0,Product_Tree.col1,Product_Tree.col2,Product_Tree.col3,Product_Tree.Model_Number,Product_Tree.Manufacturer 
FROM Product_Tree 
JOIN Product ON Product.model_number LIKE '%' || Product_Tree.MODEL_NUMBER || '%' 
AND Product.manufacturer LIKE '%' || Product_Tree.MANUFACTURER || '%';
  

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

 SELECT Product_Tree.col0,Product_Tree.col1,Product_Tree.col2,Product_Tree.col3,Product_Tree.Model_Number,Product_Tree.Manufacturer 
FROM Product_Tree 
JOIN Product ON Product.model_number LIKE ''%'' || Product_Tree.MODEL_NUMBER || ''%'' 
AND Product.manufacturer LIKE ''%'' || Product_Tree.MANUFACTURER || ''%'';