стоит так делать? (делать из 4ех запросов 1 таки образом)

BeatBox

Guest
стоит так делать? (делать из 4ех запросов 1 таки образом)

Посмотрите, пожалуйста.
стоит ли так делать:

$zapros1 = "select shit from layno";
$zapros2 = "select shit2 from layno2";
$zapros3 = "select shit3 from layno3";
$zapros4 = "select shit4 from layno4";
$testodrom = ($db->sql_query($zapros1,$zapros2 ,$zapros3,$zapros4));
$m = $db->sql_fetchrow($testodrom);

таким образом из 4ех мелких запросов делаю 1.
Делать так или нет? или разницы никакой?
 

Фанат

oncle terrible
Команда форума
Ты бы хоть попробовал этот бред запустить сначала, а?
С чего ты взял, что таким образом ты делаешь "из 4ех запросов 1"? с чего ты взял, что это вообще сработает?
ЧТО ты рассчитываешь получить в $m?

Единственное, что ты можешь вынести из этого топика - так это если у тебя таблицы layno* имеют одинаковую структуру, то тебе надо сделать из них одну.
 

BeatBox

Guest
да я написал, и жо этого пароверил - работало, но толкьо так часть, которая $zapros1 - остальные игнорировались.
Тоглда такой ворпос - мне нужно делать из одной таблицы 5 разных запросов, как это лучше сделать? учитывая что взять ужно:
count(field) from table where fueld > 0 and field <21
count(field) from table where fueld > 20 abd field <41
и так далее до 100 (всего 5 запросов).
Как это можно сделать один запросом?
 

divxak

Guest
Не знаю - пока еще не очень силен в БД, но что если использовать псевдонимы?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
хм, если память не подводит то

SELECT layno.shift, layno2.shift2, layno3.shift3 FROM layno, layno2, layno3

а то что автор написал - глупость
 

Фанат

oncle terrible
Команда форума
ребят, вы форумом не ошиблись? Это не "мускуль и юмор".
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Фанат
плиз, где я не прав? укажи
в ман и т.д.
 

BeatBox

Guest
Фанат если не сложно - напиши правильный ответ. Действительно нужно..
 

SelenIT

IT-лунатик :)
Как вариант:
[sql]select count(field) from table where field > 0 and field <101 group by CASE
WHEN field > 0 and field <21 THEN 1
WHEN field > 20 and field <41 THEN 2
WHEN field > 40 and field <61 THEN 3
WHEN field > 60 and field <81 THEN 4
WHEN field > 80 and field <101 THEN 5
END[/sql]
сорри, первый вариант был с очепяткой - исправил
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Автор оригинала: Фанат
выполни свой запрос да посмотри
выполнил, все даные мне он вернул, без ошибок, пример который я привел - написан на основе запроса из книги Дюбуа
 

divxak

Guest
SelenIT если честно - я не нашел в документации инфу о функции CASE :( Ее MySQL поддерживает?
 

dr_z10

Новичок
А вам вообще приятно работать с такими выражениями, как "shit from layno"?
 

BeatBox

Guest
Автор оригинала: SelenIT
Как вариант:
[sql]select count(field) from table where field > 0 and field <101 group by CASE
WHEN field > 0 and field <21 THEN 1
WHEN field > 20 and field <41 THEN 2
WHEN field > 40 and field <61 THEN 3
WHEN field > 60 and field <81 THEN 4
WHEN field > 80 and field <101 THEN 5
END[/sql]
сорри, первый вариант был с очепяткой - исправил
спасибо за код, только я непойму как им польщзоваться.. как мне переменной $first присвоить кол-во полей со значением больше 0 и меньша 21 и переменной $second - боле 20 и менише 41?
 

CCCP_MOCKBA

Новичок
Автор оригинала: BeatBox
спасибо за код, только я непойму как им польщзоваться.. как мне переменной $first присвоить кол-во полей со значением больше 0 и меньша 21 и переменной $second - боле 20 и менише 41?
а зачем?
Операция присваивания =
 

BeatBox

Guest
что зачем?! я непойму как этим запросом пользоваться :(
 

SelenIT

IT-лунатик :)
BeatBox
Запрос вернет 5 рядов по одному значению в каждом. Значит, тебе нужно будет пять раз сделать этот твой $db->sql_fetchrow, каждый раз присваивая результат очередной переменной $first, $second, ..., $fifth. Очевидно, что удобнее использовать вместо этого цикл и массив.
 
Сверху