HotScripts.pl - darmowe programy, skrypty  

Wróć   HotScripts.pl - darmowe programy, skrypty > Grupy dyskusyjne > pl.comp > pl.comp.bazy-danych

Odpowiedz
 
LinkBack Narzędzia wątku Wygląd
  #1 (permalink)  
Stary 14-10-2007, 00:00
Byru
Guest
 
Postów: n/a
Domyślnie zapytanie mysql

Hej

Mam takie zapytanie mysql.
Jak zmusic je do wyswietlania TYLKO tych kategorii, które zwracają noi > 0
ORAZ subcategories > 0 ?

Probowalem dodawac warunki do WHERE ale bez skutku.

Z gory dzieki za pomoc.

SELECT
(SELECT COUNT(items.id) FROM items WHERE items.id_category = categories.id
AND items.active = 1) AS noi,
categories.name, categories.id AS id_category,
(SELECT COUNT(categories.id) FROM categories WHERE categories.active = 1 AND
categories.id_parent = 0) AS total,
(SELECT COUNT(categories.id) FROM categories WHERE categories.id_parent =
id_category AND categories.active = 1) AS subcategories
FROM
categories
WHERE categories.id_parent = 0 AND categories.active = 1
ORDER BY noi DESC, categories.name ASC

Pozdr
b

Reply With Quote
  #2 (permalink)  
Stary 14-10-2007, 00:00
Grzegorz Danowski
Guest
 
Postów: n/a
Domyślnie Re: zapytanie mysql

"Byru" <byru@gazeta.pl> wrote in message
news:feq55r$pe9$1@inews.gazeta.pl...
> Mam takie zapytanie mysql.
> Jak zmusic je do wyswietlania TYLKO tych kategorii, które zwracają noi > 0
> ORAZ subcategories > 0 ?
>
> Probowalem dodawac warunki do WHERE ale bez skutku.
>
> Z gory dzieki za pomoc.
>
> SELECT
> (SELECT COUNT(items.id) FROM items WHERE items.id_category = categories.id
> AND items.active = 1) AS noi,
> categories.name, categories.id AS id_category,
> (SELECT COUNT(categories.id) FROM categories WHERE categories.active = 1
> AND categories.id_parent = 0) AS total,
> (SELECT COUNT(categories.id) FROM categories WHERE categories.id_parent =
> id_category AND categories.active = 1) AS subcategories
> FROM
> categories
> WHERE categories.id_parent = 0 AND categories.active = 1
> ORDER BY noi DESC, categories.name ASC


Bo w Where powinieneś dodać warunek typu:

(SELECT COUNT(items.id) FROM items WHERE items.id_category = categories.id
AND items.active = 1) > 0

Ja jednak zamiast wyliczać liczbę rekordów w podzapytaniach skorelowanych
robiłbym to w podzapytaniach użytych w klauzuli From, np:

Select
C.name, C.id As id_category,
(Select Count(*) From categories
Where id_parent = 0 AND active = 1) As Total,
S.Subcategories, I.Noi
From
categories As C
Inner Join
(Select id_parent, Count(*) As Subcategories
From categories Where active = 1 Group By id_parent) As S
On
S.id_parent = C.id
Inner Join
(Select id_category, Count(*) As Noi
From items Where active = 1 Group By id_category) As I
On
I.id_category = C.id

Ewentualnie można byłoby dla czytelności oba podzapytania źródłowe przenieść
do osobnych widoków.
Dzięki temu warunek ograniczający byłby bardzo prosty:

Where
I.Noi > 0 And S.Subcategories > 0

Przypuszczam, że takie przenosiny byłyby też z korzyścią dla wydajności.
A sortowanie sam dodasz
--
Pozdrawiam
Grzegorz
http://gdanowski.blogspot.com/

Reply With Quote
Odpowiedz


Użytkownicy aktualnie czytający ten wątek: 1 (0 użytkownik i 1 gości)
 
Narzędzia wątku
Wygląd

Zasady Postowania
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Włączony
UśmieszkiWłączony
[IMG] kod jest Wyłączony
HTML kod jest Wyłączony
Trackbacks are Włączony
Pingbacks are Włączony
Refbacks are Włączony


Podobne wątki
Wątek Autor wątku Forum Odpowiedzi Ostatni Post
MySQL - bardziej optymalne zapytanie =?iso-8859-2?q?Pawe=B3_Sabatowski?= pl.comp.bazy-danych 0 22-08-2007 00:02
Pytanie o MySQL (zapytanie) milutka pl.comp.bazy-danych 3 17-06-2007 00:16
proste zapytanie MySQL ursynek pl.comp.lang.php 4 16-03-2007 00:01
MySQL - zapytanie Bryniu pl.comp.bazy-danych 1 18-02-2007 00:05
Zapytanie do MySql pod windows dziala w pod linuxem nie, dlaczego? stachu pl.comp.lang.php 4 09-11-2006 00:26


Czasy w strefie GMT +1. Teraz jest 03:51.


Oprogramowanie Forum: vBulletin 3.8.0
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0