Вверх ↑
Ответов: 655
Рейтинг: 18
#1: 2014-07-29 01:36:16 ЛС | профиль | цитата
Всем привет!

Помогите пожалуйста с запросом к БД!

Есть 3 таблицы:

Clients
-------
id integer
name text
discount int (связь с settings.id)
type int (связь с cdata.id)

Cdata
-------
id integer
balance int
name text

Settings
-------
id integer
skidka integer

Собственно результат запроса должен отображать:
имя клиента (clients.name), если поле discount>0 то отобразить скидку для этого клиента (settings.skidka) else '0', если type>0 отобразить баланс и имя (cdata.balance)(cdata.name) else 0.

3й день мучаю Sqlite case'ом и join'ом результаты удручают, помогите плз, оч нужно!

Пробую так:

select name,discount, case when discount>0 then (select skidka from settings where discount=settings.id) else '0' end from clients where clients='Vasya'; но мне кажется что запрос не правильный, плюс не могу понять как сюда прикрутить запрос по балансу и имени организации.
------------ Дoбавленo в 01.36:
Нашел частичное решение!

нужно было использовать left join!

select clients.name, clients.discount,clients.type, settings.skidka, cdata.balance, cdata.name from clients left join settings on discount=settings.id left join cdata on type=cdata.id;

Выводит все нужные данные правильно, осталось сделать чтобы на пустые поля выдавал 0, как реализовать подскажите плз?
карма: 0

0