Использование логических выражений 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Использование логических выражений



OR, AND, NOT

 

#6

Select * from Tovar

Where kolvo>100 and kolvo<=1000 and price=1000

 

Пусть есть таблица «Расход товара» она связана с таблицей «Товар» по внешнему ключу nametoval. Хранит название товара и его кол-во

Rashod
ID_rashod
Kolvo_R Nametovar(fk) Data_R

 

 

Сравнение столбца с результатом вычисления выражения

Выдать из таблице расход дату расхода, наименование товара, стоимость отпущенного товара, при этом учитывать только те записи, в которых стоимость отпущенного товара больше 10

 

Select Rashod.Data_R, Rashod.nametovar,(Rashod.kolvo * Tovar.price) as t from Tovar, Rashod

Where Rashod.nametovar=Tovar.nametovar//соединяем две таблицы между собой

And t>10

 

Если мы не свяжем таблиц по nametovar то получим просто декартово произведение таблиц

 

Использование Between (между)

Если требуется чтобы значение находилось в определенном интервале, то применяется between

<значение> [not] between <значение1> and <значение2>

 

#

Select * from Tovar

Where kolvo between 10 and 100

Первое должно быть меньше

(kolvo<=10 and >=)

 

Использование IN

Входит ли значение в набор, во множество значений

<значение > [NOT] IN (<знач1>,<знач2>,…)

 

#

Select * from Tovar

Where price (10,100,1000)

Где price=10 или price=100 и т.д.

Использование Starting – начинающийся

Если необходимо чтобы строковое значение начиналось с определенной подстроки, включается предложение

<значение> [NOT] starting [with] <подстрока>

[with] ни на что не влияет

#

Выдать все товары на букву М

Select *from Tovar where nametovar starting with ‘М’ or nametovar starting ‘м’

 

Использование containing

Чтобы строковое поле содержало подстроку

<значение> [NOT] containing <подстрока>

 

#

Таблица покупателей а в ней столбец адрес, найти тех покупалей где в адресе есть подстрока «Маршала»

Select namepokupatel from Pokupateli where address containing “Маршала”

 

Upper/Lower

Преобразует строчные буквы в заглавные. Нижний и верхний регистры

 

# Выдать всех покупателей из города иркутск

Select * from pokupateli

Where upper(adress) containing “ИРКУТСК”

 

9. Использование сцепления строк/конкатенации ||

||

#Выдать имя покупателя и в скобках указать адрес

Select namepokupatel || ‘(‘ || address || ‘)’ from pokupateli

 

#

#ЭВМ-14-1

Select chifr || ‘-‘ || cast (god as char (4)) || ‘-‘ || cast (nomer as char (1)) from GROUSS

 

LIKE

Шаблоны сравнения строк значений если необходимо чтобы сравниваемые значения (значение столбца или результата вычисляемого выражения строкового типа) удовлетворяло шаблону, в условии поиска необходимо указать

 

<значение> [NOT] LIKE <шаблон> [ESCAPE <символ>]

 

Символ «%» в шаблоне означает, что на его месте может быть строка любой длины

Символ «_» в шаблоне указывает любой символ 1

 

Like ‘%-ый’

Like ‘20__’

 

Если требуется не использовать специальные функции и знак % и знак _ включается предложение ESCAPE, который определяет символ, появление которого в шаблоне отменяет специальные функции следующего за ним символа

 

Where proc like ‘_!%’ escape ‘!’

Знак! отменяет специальную функцию для процента, он будет обычным символом

 

# Найти информацию о покупателе в адресе которого содержится набор символов ‘унова’

Select * from pocupatel

Where address like ‘%унова%’

 

Использование функции CAST

Иногда возникает необходимость трактовать значение одного типа как значение другого типа, например символы использовать как число, а число как символы, в этом случае применяется функция CAST

CAST (значение AS <тип данных>)

 

Число символ Дата

Numeric -> character, date

Character->numeric,date

Date->character,numeric

 

#Найти покупателя, который делал закупки толи 105 205 или 305…единиц товара, заканчиваться будет на 05

Select * from pocupateli

Where cast(kolvo as chart (3)) like ‘%05’

 

#Значение типа Date не требуется преобразовывать к строковому типу:

Select ‘Дата расхода’ || DATE_R from Rashod

 

#Выдать ‘ЭВМ-14-1’

Select shifr||’-‘||cast(god as char (4))||’-’||cast (number as chart(1)) from GROUP as Shifrgproup

 

Использование подзапросов

 

Часто не возможно решить задачу путем использования единственного запроса Select/Например в тех случаях когда при использования условия поиска

Where <сравниваемое значение> <оператор> < значение, с которым сравнивать>

Параметр <значение с которым сравнивать> заранее не определен и должен вычисляться в момент выполнения оператора select, или представляет собой не одно а несколько значений, в этом случае применяются под запросы:

 

Select …

From…

Where <сравниваемое значение> <оператор> (select….)

Обязательно в круглых скобках

 

Вложенный оператор также может содержать внутри вложенные запросы

 

#Выдать дату, на которую приходится максимальный отпуск товара

Таблица Rashod

Select date_R, kolvo_R

from Rashod

Where kolvo_R = (Select max(kolvo_R from Rashod))

 

#Определить дату когда со склада было отгружено максимальное количество товара и реквизиты покупателя, который этот товар приобрел

Таблицы Pocupateli (P) и Rashod(R) связаны полем ID_pocup

 

Select R.date_R,R.kolvo_R, P.* from Rashod R, Pocupateli P //псевдоним

Where R.ID_pocup=P.ID_pocup

and (R.kolvo_R =(Select max(Kolvo_R) from Rashod)

 

ЗАМЕЧАНИЕ
Часто ошибкой является применение вложенного оператора select, который вместо единственного значения множество значений.

#Покупателей из ИРКУТСКА может быть много

SELECT R.data_R, R.Tovarname,R.kolvo_R, P.*

FROM Rashod R, Pocupateli P

WHERE R.ID_pocup=P.ID_pocup

And R.ID_pocup= (Select P.ID_pocup from Pocupateli P where Upper (P.Gorod)=’ИРКУТСК’)

#ИСПРАВЛЕНО

SELECT R.data_R, R.Tovarname,R.kolvo_R, P.*

FROM Rashod R, Pocupateli P

WHERE R.ID_pocup=P.ID_pocup

And R.ID_pocup in (Select P.ID_pocup from Pocupateli P where Upper (P.Gorod) ’ИРКУТСК’)

 

 

Вложение подзапросов

# Составить список отгрузки товаров покупателю, который преобрел максимальную партию какого-либо товара

 

Select R1.* from Rashod R1

Where R1.pocup_name in

(select R2.pocup_name from Rashod R2

Where R2.kolvo = (select max(R3.kolvo) from Rashod R3))



Поделиться:


Последнее изменение этой страницы: 2017-01-25; просмотров: 107; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.176.66 (0.018 с.)