не использовать view

Igor Skvortsov
Дата: 28.09.2005 13:30:24
Прочел на форумах, что если в программе на лету создавать view, а по окончании удалять, то это некрасивый стиль программирования.
Подскажите, как решить мою задачу без использования view?

Есть view:
$sth = $dbh->do("create view fin_all as select c.company,c.iduser,sd.idcust,
s.idsdelka, t.idtovar from customer c left join sdelka sd ON c.idcust = sd.idcust l
eft join sales s ON sd.idsdelka = s.idsdelka left join tovar t on s.idtovar = t.
idtovar where sd.idsdelkatype = 0 and t.grp_id IN (21,6,29,7,35,8,9,10,11,36,12,
13,14,15,16,37,17,38,39,40,41,42 ) and c.iduser = 1 and t.idtovar is not null an
d s.idsdelka is not null and sd.idcust is not null ;");

Я выбираю нужные мне компании с использованием DISTINCT
$sth = $dbh->prepare("select distinct company from fin_all;");

Такой вариант выдаст некоректный ответ. Как решить задачу без VIEW?
$sth = $dbh->prepare("select distinct c.company,c.iduser,sd.idcust,s.i
dsdelka, t.idtovar from customer c left join sdelka sd ON c.idcust = sd.idcust l
eft join sales s ON sd.idsdelka = s.idsdelka left join tovar t on s.idtovar = t.
idtovar where sd.idsdelkatype = 0 and t.grp_id IN (21,6,29,7,35,8,9,10,11,36,12,
13,14,15,16,37,17,38,39,40,41,42 ) and c.iduser = 1 and t.idtovar is not null an
d s.idsdelka is not null and sd.idcust is not null ;");
Gold
Дата: 28.09.2005 13:35:16
Нефига не понятно, но по моему всё это решается с помощью Derived tables в FB2, т.е. SELECT FROM (SELECT ...), JOIN (SELECT ...)
Gold
Дата: 28.09.2005 13:36:11
PS Это работает в FB2. Создавать представления - это не хорошо.
Мимопроходящий
Дата: 28.09.2005 13:37:37

Привет, Igor!
Ты пишешь:

Igor
create view fin_all as
   select c.company,c.iduser,sd.idcust,s.idsdelka, t.idtovar
      from customer c
        left join sdelka sd ON c.idcust = sd.idcust
        left join sales s ON sd.idsdelka = s.idsdelka
        left join tovar t on s.idtovar = t.idtovar
   where sd.idsdelkatype = 0 and t.grp_id IN (21,6,29,7,35,8,9,10,11,36,12,13,14,15,16,37,17,38,39,40,41,42 )
     and c.iduser = 1 and t.idtovar is not null and s.idsdelka is not null and sd.idcust is not null

IS> Я выбираю нужные мне компании с использованием DISTINCT

select distinct company from fin_all;

IS> Как решить задачу без VIEW?
Если тебе нужно только одно поле,
то накуя ты тащишь в селект все остальные?

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

fynda
Дата: 28.09.2005 13:37:43

Igor Skvortsov wrote:

> Такой вариант выдаст некоректный ответ.

Почему?

PS Отформатируй запросы и вставь в тэг src - читать невозможно.

Posted via ActualForum NNTP Server 1.3

Gold
Дата: 28.09.2005 13:38:03
А вобще странно... Как может быть получен одинаковый результат при разных запросах:

1) select distinct company from

2) select distinct c.company,c.iduser,sd.idcust,s.i
dsdelka, t.idtovar from
Kull Damned
Дата: 28.09.2005 14:00:09
А вобще странно... Как может быть получен одинаковый результат при разных запросах:
От данных зависит.

Posted via ActualForum NNTP Server 1.3

fraks
Дата: 28.09.2005 14:02:51
Kull Damned
А вобще странно... Как может быть получен одинаковый результат при разных запросах:
От данных зависит.
Posted via ActualForum NNTP Server 1.3


Если я правильно понял намек - в запросах разное кол-во полей. Соответственно при любых исходных данных результат будет другой ;)
Мимопроходящий
Дата: 28.09.2005 14:04:31

Привет, fraks!
Ты пишешь:

fraks
f> Если я правильно понял намек - в запросах разное кол-во полей.
f> Соответственно при любых исходных данных результат будет другой ;)
Ты неправильно понял намёк.
Помедитируй ещё.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.3

Карабас Барабас
Дата: 28.09.2005 14:23:28
Мимопроходящий
fraks
f> Если я правильно понял намек - в запросах разное кол-во полей.
f> Соответственно при любых исходных данных результат будет другой ;)
Ты неправильно понял намёк.
Помедитируй ещё
несогласен, результат - это не только записи, но и их поля

Posted via ActualForum NNTP Server 1.3