У меня есть 2 таблицы, я хочу получить данные из первой таблицы в зависимости от того, где условие применяется ко второй таблице.
PHARMASTOCK(1) Pharma Products(2)
ID ProductID
ProductID GenericName
TradeName TradeName
MRP Supplier
Rate Manufacturer
Stock PurchasePTR
Batch UnitRate
Expiry MRP
StockSection
Это хранимая процедура SQL, которую я написал, но она не работает. как и ожидалось!
@StockSupplier varchar(50), @StockManufacturer Varchar(50)
AS
SELECT PharmaStock.ProductID,PharmaStock.TradeName,PharmaStock.MRP,Rate,Batch,Expiry,StockSection,Stock,Supplier,Manufacturer
from PharmaStock
Full JOIN PharmaProducts ON PharmaStock.ProductID = PharmaProducts.ProductID
where Supplier like + @StockSupplier + '%' and Manufacturer like + @StockManufacturer + '%'
order by Manufacturer asc
Ваш FULL OUTER JOIN возвращает результат RIGHT OUTER JOIN. Переместите условия предложения WHERE в предложение ON, чтобы получить истинный результат FULL OUTER JOIN.
Что вы ожидаете? Каков результат вашего запроса? Что не так в результате? Можете ли вы привести некоторые примеры данных?
@jarlh Сервер MS SQL
@heiwil Запрос не возвращает никаких результатов!


SELECT PharmaStock.ProductID,
PharmaStock.TradeName,
PharmaStock.MRP,
PharmaStock.Rate,
PharmaStock.Batch,
PharmaStock.Expiry,
PharmaStock.StockSection,
PharmaProducts.Supplier,
PharmaProducts.Manufacturer
FROM PharmaStock
INNER JOIN PharmaProducts ON PharmaStock.ProductID = PharmaProducts.ProductID WHERE PharmaProducts.Supplier LIKE '%%' and PharmaProducts.Manufacturer LIKE '%%'
ORDER BY PharmaProducts.Manufacturer asc
передать строки для поставщика и производителя для дальнейшей фильтрации результатов соединения.
SELECT PS.ProductID,PS.TradeName,PS.MRP,PS.Rate,PS.Batch,PS.Expiry,PS.StockSection,PS.Stock,PP.Supplier,PP.Manufacturer
from PharmaStock PS
inner JOIN PharmaProducts PP ON PS.ProductID = PP.ProductID
where Supplier like CONCAT(@StockSupplier , '%') and Manufacturer like CONCAT(@StockManufacturer ,'%') order by Manufacturer asc
В запросе изменяется функция конкатенации, а затем символ плюса (после того, как его нужно удалить).
SELECT PharmaStock.ProductID,PharmaStock.TradeName,PharmaStock.MRP,Rate,Batch,Expiry,StockSection,Stock,Supplier,Manufacturer
from PharmaStock
INNER JOIN PharmaProducts ON PharmaStock.ProductID = PharmaProducts.ProductID
where Supplier like @StockSupplier + '%' and Manufacturer like @StockManufacturer + '%'
order by Manufacturer asc
Вы используете MySQL или MS SQL Server?