Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11457[/thread]

[SQL] 2 counts in einer Abfrage

Leser: 1


<< >> 3 Einträge, 1 Seite
olruebe01
 2008-03-12 18:00
#106984 #106984
User since
2006-01-19
192 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich habe folgendes Problem und hoffe auf Eure Hilfe:

Ich habe eine Tabelle, in der Mitarbeiter und Aufträge verwaltet werden.
Für jeden Mitarbeiter einesAuftrages gibt es eine Zeile mit Auftragsnummer und Mitarbeiternummer. Wenn also an Auftrag 2 Mitarbeiter 5 und 7 arbeiten sollen, gibt es 2 Zeilen für diesen Auftrag.

Falls einem Auftrag noch kein Mitarbeiter zugeodnet wurde, dies aber nooch geschehen soll, wird die Mitarbeiternummer mit 0 angegeben, bis eine richtige Nummer angegeben wurde.

Ich möchte nun abfrage, wieviele Mitarbeiter dem Auftrag "2" zugewiesen werden sollen (also wieviele Zeilen mit Auftragsnummer 2 gibt es) und bei wieviele Mitarbeiter schon zugewiesen wurden (also Mitarbeiternummer > 0).

Zusätzlich noch das Datum aber das stellt nicht das Problem dar.

Mein Ansatz:
Code: (dl )
1
2
3
4
5
6
7
8
9
SELECT count(ID ) AS number, von, bis
FROM `auftraege`
WHERE `Auftrags_id` = 2
GROUP BY von, bis
UNION
SELECT count(ID ) AS gebucht, von, bis
FROM `auftraege`
WHERE `Auftrags_id` = 2 AND mitarbeiter_id > 0
GROUP BY von, bis LIMIT 0 , 30


Dies zeigt mir aber leider den Wert gebucht nicht an?!?

Wo mache ich den Fehler?

Danke und Gruß,
Oliver

----
Modedit Gwendragon:
Thread verschoben und Titel erweitert
----
nepos
 2008-03-12 19:12
#106986 #106986
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hm, kann es sein, dass die gebuchten Werte einfach auch in der ersten Spalte zusammen mit den anderen Daten angezeigt werden?
Wenn du das separat haben willst, musst du die beiden Selects entsprechend umbauen, so dass für nicht gebuchte und gebuchte eine eigene Spalte im Ergebnis zurückkommt.
pq
 2008-03-13 00:48
#106990 #106990
User since
2003-08-04
12207 Artikel
Admin1
[Homepage]
user image
nur so als bemerkung: wenn einem auftrag noch kein mitarbeiter zugewiesen wurde, würde ich
ihn erst gar nicht in dieser tabelle speichern; das ist ein schlechtes datenmodell. es muss
eine tabelle auftrag und eine tablle auftrag_mitarbeiter (n:n) geben. korrekte datenmodelle lösen
oft logische probleme beim auswerten der daten (jetzt mal abgesehen von redundanten daten,
die zeit sparen können).
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 3 Einträge, 1 Seite



View all threads created 2008-03-12 18:00.