Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [SQL] Zapytanie zliczające mężczyzn i kobiety z tabeli
michail_w
post 24.11.2010, 14:13:15
Post #1





Grupa: Zarejestrowani
Postów: 21
Pomógł: 0
Dołączył: 18.10.2009

Ostrzeżenie: (0%)
-----


Mam tabelę o następującej strukturze:
Kod
(int) IDucznia | (string) imie | (string) nazwisko | (string) IDklasy

pole IDklasy zawiera nazwę klasy, np. 1a, 1b itd.

Mam za zadanie utworzyć z tej jednej tabeli zestawienie chłopców i dziewczynek w poszczególnych klasach. Na razie udało mi się zrobić coś takiego:
  1. SELECT IDklasy, count(imie) AS kobiety FROM Uczniowie WHERE imie LIKE "*a" GROUP BY IDklasy;

ale to mi zwraca tylko ilość kobiet w poszczególnych klasach. Nie doszedłem jak teraz zliczyć odrzucone rekordy, żeby dostać ilość chłopców. Jak mam zmodyfikować zapytanie?

Ten post edytował michail_w 24.11.2010, 14:14:32
Go to the top of the page
+Quote Post
Skie
post 24.11.2010, 14:21:09
Post #2





Grupa: Zarejestrowani
Postów: 555
Pomógł: 84
Dołączył: 20.02.2008
Skąd: Małopolska

Ostrzeżenie: (0%)
-----


Ze składni SQL obstawiam, że jest to pisane w Accessie, treść zadania gdzieś widziałem... czyżby próbna matura z informatyki? snitch.gif

Biorąc pod uwagę sposób w jaki zliczasz kobiety, masz 2 wyjścia lziczając chłopców
1. Zliczyć osoby, których imię NIE kończy się na literę "a".
2. Zliczyć wszystkich i odjąć ilość kobiet, którą to już policzyłeś.

To pierwsze możesz uzyskać stosując to same zapytanie z użyciem "NOT LIKE" zamiast "LIKE" (nie wiem czy Access to obsługuje, no ale warto sprawdzić)
To drugie powinieneś natomiast wiedzieć.

Ten post edytował Skie 24.11.2010, 14:23:54


--------------------
Wieloprocesowość i wielowątkowość w PHP, poznaj Kraken PHP!
Serwer HTTP i WebSocket w PHP | Promise/A+
Strona Domowa | Elradia MMORPG
FireFox: make the web better.
Go to the top of the page
+Quote Post
poli25
post 24.11.2010, 14:43:30
Post #3





Grupa: Zarejestrowani
Postów: 239
Pomógł: 20
Dołączył: 19.02.2010

Ostrzeżenie: (0%)
-----


SELECT IDklasy,(SELECT count(imie) FROM Uczniowie)as wszyscy,

(select count(imie)
FROM Uczniowie WHERE imie LIKE "*a") as kobiety,
(SELECT count(imie) FROM Uczniowie)-(select count(imie)
FROM Uczniowie WHERE imie LIKE "*a") as roznica

from uczniowie
group by idklasy ;


p.s.
mozesz zmodyfikowac tak:


SELECT a.IDklasy,(SELECT count(imie) FROM Uczniowie where idklasy=a.idklasy)as wszyscy,

(select count(imie)
FROM Uczniowie WHERE imie LIKE "*a" and idklasy=a.idklasy) as kobiety,
(SELECT count(imie) FROM Uczniowie where idklasy=a.idklasy)-(select count(imie)
FROM Uczniowie WHERE imie LIKE "*a" and idklasy=a.idklasy) as roznica

from uczniowie a
group by a.idklasy ;

Ten post edytował poli25 24.11.2010, 14:47:04
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 2.05.2025 - 08:33