ЕСЛИ выражение в SQL - PullRequest
       9

ЕСЛИ выражение в SQL

1 голос
/ 04 апреля 2010
INSERT INTO item_quotation
(item_id, quotation_id,name_searched,item_name,other_name,selling_price,discounted_price)
SELECT DISTINCT I.item_id," . $quotation_id . ",T.item_name, I.name,I.other_name, INV.selling_price, I.discounted_price
FROM temp_quotations T, item I, inventory INV<br/>
WHERE ( I.name LIKE CONCAT(  '%', T.item_name,  '%' )
OR  I.other_name LIKE CONCAT(  '%', T.item_name,  '%' ))
AND INV.item_id =  I.item_id;

У меня есть таблица с именем temp_quotations (temp_item_id, item_name), имеющая значения
(1, точильщик), (2, сверло), (3, комплект)
У меня есть другая таблица с именем item (item_id, name, other_name, discounts_price), имеющая значения
(1, кофемолка A, 100), (2, комплект A, 200)
Когда я выполняю этот sql, он вставляет значения в таблицу item_quotation (item_id, quotation_id, name_searched, item_name, other_name, selling_price, discounting_price), например, в этом случае он вставит
(1,1, кофемолка, кофемолка A, 150,100)
(2,1, комплект, комплект А, 250 200)
Поскольку детализация элемента не найдена в элементе таблицы, она не будет отображаться в таблице item_quotations. Я хочу написать оператор if в этом sql, чтобы, когда item_name из temp_quotation не совпадал с именем из item, он отображал «not found» вместо item_name. Это то, что я пытался, но он не отображает «не найден»:

INSERT INTO item_quotation
(item_id, quotation_id,name_searched,item_name,other_name,selling_price,discounted_price)
SELECT DISTINCT I.item_id," . $quotation_id . ",T.item_name,
IF(I.name LIKE CONCAT(  '%', T.item_name,  '%' ),I.name,'not found'),I.other_name, INV.selling_price, I.discounted_price 
FROM temp_quotations T, item I, inventory INV
WHERE ( I.name LIKE CONCAT(  '%', T.item_name,  '%' ) 
OR  I.other_name LIKE CONCAT(  '%', T.item_name,  '%' ))
AND INV.item_id =  I.item_id;

Ответы [ 2 ]

2 голосов
/ 04 апреля 2010

Если вы используете оператор CASE, вы получите желаемый результат.

вот ссылка на использование:

http://msdn.microsoft.com/en-us/library/ms181765.aspx

0 голосов
/ 04 апреля 2010

Ну, вы можете создать функцию или процедуру для MySQL Синтаксис должен выглядеть примерно так:

CREATE PROCEDURE insert_item(IN ITEM STRING) 
BEGIN
SELECT item_id FROM quotation WHERE item=ITEM
 IF (item_id > 0)  
  THEN INSERT INTO.... 
  ELSE RETURN FALSE 
 END IF; 
END|

Это просто пример, для дополнительной информации проверьте

http://www.databasejournal.com/features/mysql/article.php/3547931/MySQL-Stored-Procedures-Part-2.htm

...