Querryfrage für Fortgeschrittene

psvzero

Grünschnabel
Servus.

ich stehe vor einem Problem was ein querry angeht.

Ich habe eine Tabelle "member" in der Personen drin stehen. Ihr Geschlecht ist in der Spalte "gender_id" mit den Werten 1 für Frau und 2 für Mann festgelegt.

Weiterhin will ich aus einer anderen Tabelle "gender_ref" in der eine Beschreibung für die geschlechter in der Spalte "gender" steht. Aso F und M.

nun möchte ich eine Ausgabe erhalten, die mir die Beschreibung F und M ausgibt und dahinter die Anzahl der Männer und Frauen.
ca. so

Gender-------Number

F 5
M 7


Ich wollte das ganze über einen count machen (logisch). Also habe ich gecountet

select count(gender_id) from member where gender_id=1
so damit bekomme ich die Anzhal der Frauen.

Um die Anzahl der Männer in die gleiche Spalte in der Ausgabe zu bekommen, habe ich das ganze über ein UNION lösen wollen, denn (und das ist dann eigentlich mein Problem) habe ich keine andere Möglichkeit gefunden, wie ich aus einer Quellspalte zwei unterschiedliche Sachen counten kann un diese dann in einer Spalte wieder ausgeben kann.
also so:

select count(a.gender_id) as number from member a where a.gender_id=1 UNION ALL
select count(b.gender_id) as number from member b where b.gender_id=2

Um das nun irgendwie in die ausgabe zu bekommen, habe ich das ganze in die FROM geschrieben.
Mein aufruf sah also so aus:

SELECT
gr.gender as "Gender",
gnr.number as "Number"
FROM
gender_ref gr,
(select count(a.gender_id) as number from member where
a.gender_id=1 UNION ALL select count(b.gender_id) as number from
member b where b.gender_id=2)
GROUP BY
gr.gender, gnr.number

Soweit mein Abfrage, aber mein Ergebnis ist nicht wie oben erhofft, sonder so:

Gender Number

---F------------------5
---F------------------7
---M-----------------5
---M-----------------7


Kann das sogar technisch verstehen, da durch das UNION das ganze eben zweimal aufgerufen wird, aber ich weiß leider nicht wie ich es anders machen soll. Über VIEWs habe ich es auch schon probiert. Gleiches Ergebnis

Ich hoffe, dass mir jemand vielleicht einen Rat geben kann, wie man das mit dem Counten in der gleichen Spalte machen kann.

THX

Robin
 
ich hoffe ich blick dein Problem jetzt, aber:

Warum führst du die Datenbank-Abfrage nicht 2mal aus

$frauen = Select * ........... where gender_id = 1
das laden wir in $anzahl_frauen

$maenner = Select * ................ where gender_id = 0
das laden wir in $anzahl_maenner


Dann hast du 2 Variablen, die du getrennt ausgeben kannst.

Oder versteh ich da was falsch?
 
Da allein schon die Logik beider Tabellen nicht vorhanden ist, finde ich diese Abfrage alles andere als fortgeschritten. Du nutzt in der Tabelle gender einen künstlichen Index gender_id und verwendest allerdings nicht in gender_ref...

naja

PHP:
SELECT b.gender, COUNT(a.gender_id) AS anzahl FROM gender AS a, gender_ref AS b WHERE (a.gender_id = 1 AND b.gender = 'F') OR (a.gender_id = 2 AND b.gender = 'M') GROUP BY b.gender

cu Bloddy
 
Also um ehrlic zu sein ist mir vollkommen schleierhaft, ws dieser Satz bedeuten soll.

Original geschrieben von bloddy newbie
Du nutzt in der Tabelle gender einen künstlichen Index gender_id und verwendest allerdings nicht in gender_ref...

Das "Querryfrage für Fortgeschrittene" war so geimeint, dass es "leider" nicht so einfach ist das Problem zu lösen, denn sonst hätte ich es wahrscheinlich selbst geschafft und es dahingehend wohl eher ein etwas Fortgeschrittener lösen kann, zu denen du dich scheinbar genau so wenig zählen kannst (was dein Name ja scon impleziert) wie ich mich. Aber danke dennoch, das du dir die Zeit genommen hast meinen thread zumindest zu überfliegen.

Zu der zweiten Antwort:

Nein ich kann leider nicht zwei unabhängige Abfragen machen, weil da noch mehr Sachen mit drin hängen und ich das ganze in einer XML hab die später die Tabelle ausgeben soll.
 
Hallo,

sehr nett was du das schreibst, aber mein Nickname hat mit meinem Wissensstand nicht wirklich viel gemein.
Ich habe lediglich dein DB-Konzept? in Frage gestellt und dir die richtige Antwort auf dein Gesuch gegeben. Das nun noch mehr Tabellen mit dran hängen, ist deinem ersten Posting leider nicht zu entnehmen.

Dennoch viel Erfolg beim Knobeln.

Bloddy
 
Du solltest Dir mal die Mühe machen und das Script von bloddy newbie probieren. Es sieht vollkommen richtig aus. Wenn Du es nicht verstehst empfehle ich Dir eine Schulung "SQL-Grundlagen"
 
Zurück