помоооооощ
9 отговора
409 прегледа
помоооооощ
Имам таблица "Учебници".
Тя съдържа много неща, по-важните от които са "заглавие"(текст),"стар"(1/0),"нов"(1/0);
Трябва да изкарам нещо от вида:
Заглавие----------Стар----------Нов
----------------------------------------
Еди какво си----------5----------11
Еди какво си----------1----------8
Еди какво си----------6----------3
т.е. сортирани по "Нов", групирани по заглавие и с преброени "Стар"
SELECT title,COUNT(*) as how FROM books GROUP BY title ORDER BY how DESC ми върши работа дотам, че ми групира по заглавие и брои новите, но се опитвам в същата заявка да преброя и старите... :( Ама не знам как
mysql 4.0.18
Помощ !
Тя съдържа много неща, по-важните от които са "заглавие"(текст),"стар"(1/0),"нов"(1/0);
Трябва да изкарам нещо от вида:
Заглавие----------Стар----------Нов
----------------------------------------
Еди какво си----------5----------11
Еди какво си----------1----------8
Еди какво си----------6----------3
т.е. сортирани по "Нов", групирани по заглавие и с преброени "Стар"
SELECT title,COUNT(*) as how FROM books GROUP BY title ORDER BY how DESC ми върши работа дотам, че ми групира по заглавие и брои новите, но се опитвам в същата заявка да преброя и старите... :( Ама не знам как
mysql 4.0.18
Помощ !
допълнение
Относно това:
"SELECT title,COUNT(*) as how FROM books GROUP BY title ORDER BY how DESC ми върши работа дотам, че ми групира по заглавие и брои новите, но се опитвам в същата заявка да преброя и старите... :( Ама не знам как"
,
което всъщност ми групира и сортира само по заглавие ... имах в предвид:
SELECT title,COUNT(*) as how FROM books WHERE new='1' GROUP BY title ORDER BY how DESC
Така броя всяко ново заглавие, но няма как в същото време да броя и колко пъти го има като ново :(
"SELECT title,COUNT(*) as how FROM books GROUP BY title ORDER BY how DESC ми върши работа дотам, че ми групира по заглавие и брои новите, но се опитвам в същата заявка да преброя и старите... :( Ама не знам как"
,
което всъщност ми групира и сортира само по заглавие ... имах в предвид:
SELECT title,COUNT(*) as how FROM books WHERE new='1' GROUP BY title ORDER BY how DESC
Така броя всяко ново заглавие, но няма как в същото време да броя и колко пъти го има като ново :(
Re: UNION
Не ми върши работа тъй като увеличава броя на записите в набора редове, а аз трябва да итерирам през него ... така примерно за един и същ учебник ще изпринтя 2 реда - един със заглавие, стари броеве и доста по-надолу - заглавие и нови броеве. Няма ли как да преброи новите в същата заявка ?
tyi mai stava
SELECT b.title,(select count(*) from books where old=Yes and title=b.title group by title) as old ,
(select count(*) from books where new=Yes and title=b.title group by title) as new
FROM books b
group by b.title;
(select count(*) from books where new=Yes and title=b.title group by title) as new
FROM books b
group by b.title;
Re: tyi mai stava
Перфектно е, но май не се поддържа от версията на mysql, която използвам (4.0.18). Мерси все пак :(
Re: помоооооощ
Според мен си в грешка още в конструкцията ама ти си знаеш
стар и нов са алтернативи - няма как хем да е ста хем да е нов
сложи ги в една колона 1 - стар, 0 - нов
по-нататък сам се сещаш как да стане
Представи си, че сетнеш и двата в 1 ци, ко става тогава - инконсистентност т.е. при твоя вариан тряа да имаш и констрейнт който да предотврати подобно нещо
стар и нов са алтернативи - няма как хем да е ста хем да е нов
сложи ги в една колона 1 - стар, 0 - нов
по-нататък сам се сещаш как да стане
Представи си, че сетнеш и двата в 1 ци, ко става тогава - инконсистентност т.е. при твоя вариан тряа да имаш и констрейнт който да предотврати подобно нещо
Re: помоооооощ
SELECT title, SUM(star), SUM(nov) FROM books GROUP BY title
Ако не ще да ти ги сумира виж как можеш да кастнеш сет-а (0/1) към интежер
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Ако не ще да ти ги сумира виж как можеш да кастнеш сет-а (0/1) към интежер
root@ro6avia#echo rm -rf * > /bin/seek_and_destroy
root@ro6avia#/bin/seek_and_destroy
Re: помоооооощ
Прав си, че може би наистина таблицата не е перфектно нормализирана ... в думите ти има истина ... и все пак обаче има вариант да стане, това което ми трябва. Главната причина, поради която не определям дали един учебник е стар/нов в една колона, е че във всеки един момент може да се появи нова категория. (примерно) :))
да !
Евала бате ... не мога да повярвам, че става толкова просто :))
Как не съм сетил не знам :)
SELECT title, SUM(new='1'), SUM(old='1') AS HOW FROM book GROUP BY title ORDER BY HOW DESC
Това е, което търсех :)
P.S. Мерси за всички постове
Как не съм сетил не знам :)
SELECT title, SUM(new='1'), SUM(old='1') AS HOW FROM book GROUP BY title ORDER BY HOW DESC
Това е, което търсех :)
P.S. Мерси за всички постове