MySQL-Abfrage
Manuel111
- datenbank
Hallo
Kann mir jemand sagen wie ich folgende abfrage anstelle.
Habe eine Tabelle mit einem Feld und Werten von 1-3.
-------
|Feld1|
-------
|1 |
-------
|2 |
-------
|3 |
-------
|1 |
-------
|2 |
-------
|1 |
-------
Ich brauch jetzt:
1. Die Anzahl der Felder in denen 1 od.2 steht.
2. Die Anzahl der Felder in denen 1 steht.
Wie kann ich das in einer Abfrage machen?
lg.
Manuel
Moin
Beschäftige dich mit dem MySQL-Befehl COUNT
Gruß Bobby
Ja aber das geht nicht mit mit solcher abfrage. ich kanns mit count machen wenn ich nur eine anzahl haben will aber es funktioniert nicht mit 2.
lg.
Und von WHERE hast du schonmal was gehört?
"HOLE DIE ANZAHL ALLER DATENSÄTZE
AUS DER TABELLE X
WO DIE SPALTE DIESEN WERT BESITZT"
Ja aber ich will die Anzahl wo 1 drinnen steht und die anzahl wo 1 od.2 drinnen steht. das geht nicht so einfach mit der where klausel.
ich möchte das ganze mit einer abfrage machen können!
Moin
ich möchte das ganze mit einer abfrage machen können!
SELECT COUNT( * ) anzahl1oder2, (
SELECT COUNT( * )
FROM TABLE
WHERE anzahl = '1'
)anzahl1
FROM TABLE
WHERE anzahl = '1'
OR anzahl = '2'
Nun hast du entsprechend 2 Werte: anzahl1 und anzahl1oder2.
Du musst lernen zu verschachteln und Subquerys zu nutzen.
Gruß Bobby
Moin
Anders gesagt: Subquerys sind das Zauberwort!
Gruß Bobby
Hallo erstmal,
Habe eine Tabelle mit einem Feld und Werten von 1-3.
Feld1 1
2 3
1 2
1
Ich brauch jetzt:
- Die Anzahl der Felder in denen 1 od.2 steht.
- Die Anzahl der Felder in denen 1 steht.
Du brauchst die Anzahl der Felder
SELECT count(feld1) AS Alle einser<<
Dannach Von welcher Tabelle das ganze kommt
FROM Tabellenname
Nun kommt jetzt die Bedingung
WHERE feld1=1
Jetzt noch zum schluss
GROUP BY feld1; semikolon nicht vergessen
Die andere Abfrge ist fast das selbe, ich hoffe du hast das Prinzip verstanden, jetzt viel spass beim selber denken.
Gruß Jonny F.
Moin
GROUP BY feld1; semikolon nicht vergessen
Warum willst du gruppieren wenn nur eine COUNT-Variable als Feld abgefragt ist. Hat das Performancevorteile? Ich denke nicht. Oder?
Ich frage weil das Ergebnis nur 1 Zahl ist mit dieser Abfrage.
Gruß Bobby
Servuts,
GROUP BY feld1; semikolon nicht vergessen
Warum willst du gruppieren wenn nur eine COUNT-Variable als Feld abgefragt ist. Hat das Performancevorteile? Ich denke nicht. Oder?
Ich frage weil das Ergebnis nur 1 Zahl ist mit dieser Abfrage.
Da geb ich dir vollkommen recht, aber Datenbanken werden oft erweitert bzw. verändert. Drum sag ich:" Vorbeugen ist besser als Nachbeugen :D".
Gruß Jonny F.
Moin
Da geb ich dir vollkommen recht, aber Datenbanken werden oft erweitert bzw. verändert. Drum sag ich:" Vorbeugen ist besser als Nachbeugen :D".
Aber nicht bei einem Query der eine Anzahl holen soll. Da finde ich das Quatsch.
Gruß Bobby
Moin
Da geb ich dir vollkommen recht, aber Datenbanken werden oft erweitert bzw. verändert. Drum sag ich:" Vorbeugen ist besser als Nachbeugen :D".
Aber nicht bei einem Query der eine Anzahl holen soll. Da finde ich das Quatsch.
So gesehen hast du schon recht, ich denk es kommt immer auf die dimension so einer Datenbank an. Bei einer kleinen ist des so schon ok.
Gruß Jonny F.
Mahlzeit Jonny F.,
So gesehen hast du schon recht, ich denk es kommt immer auf die dimension so einer Datenbank an. Bei einer kleinen ist des so schon ok.
Nein, es ist prinzipiell Quatsch, die Ergebnismenge einer Abfrage, die nur genau eine Spalte und eine Zeile enthalten *kann*, gruppieren zu wollen.
MfG,
EKKi
So gesehen hast du schon recht, ich denk es kommt immer auf die dimension so einer Datenbank an. Bei einer kleinen ist des so schon ok.
Nein, es ist prinzipiell Quatsch, die Ergebnismenge einer Abfrage, die nur genau eine Spalte und eine Zeile enthalten *kann*, gruppieren zu wollen.
Du siehst es zu engstirnig, es kann immer mal sein das man Attribute bzw. Datensätze abänder oder hinzufügt, stell dir mal vor aus den einzer und zweier werden begriffe und Attribute kommen dazu.
Des war in dieser Perspektive gemeint.
Gruß F.
Moin
Du siehst es zu engstirnig, es kann immer mal sein das man Attribute bzw. Datensätze abänder oder hinzufügt, stell dir mal vor aus den einzer und zweier werden begriffe und Attribute kommen dazu.
Des war in dieser Perspektive gemeint.
Stell dir vor, das du da eh die gesamte Abfrage anfassen musst. Gruppierung bei Abfragen die nur 1 Ergebniszeile enthalten können ist einfach Quatsch.
Gruß Bobby
Mahlzeit Jonny F.,
Nein, es ist prinzipiell Quatsch, die Ergebnismenge einer Abfrage, die nur genau eine Spalte und eine Zeile enthalten *kann*, gruppieren zu wollen.
Du siehst es zu engstirnig,
Nein. Wenn Du weiterhin der Meinung bist: *beweise* es.
es kann immer mal sein das man Attribute bzw. Datensätze abänder oder hinzufügt, stell dir mal vor aus den einzer und zweier werden begriffe und Attribute kommen dazu.
Und? Was ändert das an der Abfrage an sich? Richtig: gar nichts. Sie wird weiterhin genauso funktionieren. Wenn ich allerdings eine ganze andere Information haben möchte, brauche ich eh eine neue Abfrage (oder muss die bestehende anpassen).
Es ist und bleibt Quatsch, eine dermaßen eindeutige und unveränderbare Ergebnismenge gruppieren zu wollen.
MfG,
EKKi
moin,
so viel wirbel um eine kleine abfrage...du kannst dir zu nutze machen, dass aggregat funktionen NULL werte nicht berücksichtigen. die frage ist nur, willst du die beiden werte nebeneinander oder untereinander, das eine geht mit UNION ALL, das andere mit CASE.
SELECT COUNT(*) Anzahl
FROM tabelle t1
WHERE t1.feld1= 1
UNION ALL
SELECT COUNT(*)
FROM tabelle t2
WHERE t2.feld1 IN (1,2)
;
oder aber zwei spalten und ein datensatz als ergebnismenge
SELECT COUNT(CASE WHEN t1.feld1 = 1 THEN 1 ELSE NULL END) Anzahl1,
COUNT(CASE WHEN t1.feld1 IN (1,2) THEN 1 ELSE NULL END) Anzahl12,
FROM tabelle t1
;
Ilja