|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Нужен запрос который по номерам изделий в таблице (planestrateg), в другой таблице (materials) выцепляет все записи относящиеся к изделиям (по номеру записи изделия в materials) в planestrateg что то типа: "where idxproduct in (select idxproduct from planestrateg)", где idxproduct - номер записи в таблице изделий (есть и в materials и в planestrateg) и умножает количество каждого материала из таблицы материалов на количество изделия к которому он относится а затем полученное (одинаковые материалы в каждом из изделий)суммирует Вот, составил запрос: select t1.name,t2.name,t1.mcountreal*sum(t2.begincountproduct) from materials t1,planestrateg t2 where t1.idxproduct = 222 and t2.idxproduct =222 group by t1.name,t2.name,t1.mcountreal который все вышеописанное делает но с одним изделием, а их много и нужно все одинаковые материалы просуммировать. Если написать ... where t1.idxproduct in (...) то суммируется неправильно. Может что то не так в group by? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2002, 16:23 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
А зачем ты название изделия выводишь, если тебе материаллы просуммировать надо? Поля у тебя сильно сложно запомнить, так что идею только скажу. Напиши запрос из таблицы материалов (пусть например это таблица MAT) и для каждой записи считай сумму количеств изделий (пусть таблицы IZD) и умножай её на количество материалла из таблицы материаллов примерно так: SELECT M.NAME,M.KOL*(SELECT SUM(I.KOL) FROM IZD I WHERE I.ID=M.ID) FROM MAT M, где KOL-количества, ID-код материалла. По крайней мере, для суммирования материаллов по изделиям так сделать можно. А имя изделия тут бессмысленно выводить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2002, 18:40 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
А зачем ты название изделия выводишь, если тебе материаллы просуммировать надо? Поля у тебя сильно сложно запомнить, так что идею только скажу. Напиши запрос из таблицы материалов (пусть например это таблица MAT) и для каждой записи считай сумму количеств изделий (пусть таблицы IZD) и умножай её на количество материалла из таблицы материаллов примерно так: SELECT M.NAME,M.KOL*(SELECT SUM(I.KOL) FROM IZD I WHERE I.ID=M.ID) FROM MAT M, где KOL-количества, ID-код материалла. По крайней мере, для суммирования материаллов по изделиям так сделать можно. А имя изделия тут бессмысленно выводить. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.09.2002, 18:41 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Ты прав, старик. Имена изделий выводить бессмысленно. Но, может быть я был не доконца корректен в постановке вопроса, но изделия у меня состоят из материалов а не наоборот и необходимо (по каждому изделию) умножить кол-во изделия в таблице planestrateg на количество каждого из принадлежащих ему материалов (таблица materials) и в конце просуммировать одинаковые материалы. Это так называемая потребность в материалах. Если в виде формулы то: IZD1*MAT1+IZD2*MAT1+IZD3*MAT1... IZD1*MAT2+IZD2*MAT2+... IZD1*MAT3 IZD1*MAT4+IZD5*MAT4 где все это как-бы записи в столбце с суммой произведений одинаковых материалов по всем изделиям IZD это изделие, а MAT - материал ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2002, 11:49 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
А я тебе что написал ? Вынеси кол-во материала за скобки и получишь: MAT1*(IZD1+IZD2+IZD3+...) MAT2*(IZD1+IZD2+...) Запрос каждый материал перебирает и умножает его количество на сумму количеств этого материалла во всех изделиях. К тому-же этот запрос очень хорошо оптимизируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2002, 12:07 |
|
Помогите составить запрос
|
|||
---|---|---|---|
#18+
Извини, но ты выбираешь все материалы из таблицы, а надо только те, которые есть в изделиях плана (planestrateg) и если к твоему запросу в конец дописать условие where M.ID in (select ID from planestrateg), то опять все неправильно работает, при том что where M.ID = 222 (конкретно задать номер изделия из плана) все работает как надо. Но все равно спасибо за заботу. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.09.2002, 14:32 |
|
|
start [/forum/topic.php?fid=40&fpage=535&tid=1581180]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 124ms |
0 / 0 |