• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

verzwickte mysql abfrage

skycryer

New member
hallo zusammen nachdem mir bei meinem javascript prob so gut geholfen wurde habe ich noch eine frage.

Ich habe eine Tabelle in einer datenbank die folgende struktur hat,

ID; gebot; von;

Ich möchte gerne nur den datensatz herausfiltern der nur einmal vorkommt und davon dann den kleinsten ermitteln.

Bin für jeden tip dankbank auch für jede geschriebene programmzeile
 
Ich möchte gerne nur den datensatz herausfiltern der nur einmal vorkommt und davon dann den kleinsten ermitteln.

Öh verstehe ich jetzt was falsch? Wenn ein Datensatz nur einmal vorkommt, gibt es keinen der größer ist?!?

Vllt. versuchst du nochmal dein Problem besser zu erklären, so ergibt das keinen Sinn.
 
also ich habe wie gesaft eine tabelle mit dieser struktur

ID; gebot; von;

darin steht z.b

ID; gebot; von;
1; 12; Name1
2; 11; Name1
3; 12; Name2
4; 15; Name1
5; 13; Name4
6; 18; Name3
7; 14; Name2
8; 11; Name1
9; 13; Name5

wie ihr seht kommen die gebote 12,11,13 mehrmals vor, wobei der kleinste wert der nur einmal vorkommt 14 ist, mein problem ist diesem automatisch zu filtern. So das nur noch der wert ausgegeben wird der alleine vorkommt und dann der kleinste von den die nicht mehrfach auftreten.

Hoffe es ist jetzt beser rübergekommen.
 
das wirst du mit sql nicht hinbekommen, lade dir einfach alle daten in php und bastel dir dann eine schleife

so in etwa könnte es funsen:
PHP:
while(daten){
  push(@zahlen, $gebot);
}
sort(@zahlen};
for($i=0;$i<=sizeof(@zahlen);i++){
  if($zahlen[$i] != $zahlen[$i+1])
  {
    $kleinste_zahl = $zahlen[$i];
    break;
  }
}
 
:eek:
eigentlich ziemlich simple... sorry habe ich nicht dran gedacht, ich verkriech mich besser wieder unter meinen Stein und halte den Mund

thx Albu
 
Genial klappt bestens danke dir

Es ist doch noch eine schwierigkeit aufgetreten, ich möchte nicht alle datensätze filtern sonder nur die vom typ 4 daher habe ich bei where noch eine abfrage reingeschrieben aber das klappt nicht.

Code:
SELECT *
FROM gebote_auktionsart_2
WHERE gebote_auktionsart_2.produkt_id = '4' AND geboten = (select geboten from gebote_auktionsart_2
GROUP BY geboten
HAVING count(geboten) = 1 and geboten = min(geboten) limit 1)

Es kommt keine fehlermeldung sondern liefert einfach ein ergebniss was nicht sein kann da genug datensätze mit produkt_id = 4 vorkommen.
 
Es kommt keine fehlermeldung sondern liefert einfach ein ergebniss was nicht sein kann da genug datensätze mit produkt_id = 4 vorkommen.
Es kommt genau das raus, was Du von der Datenbank abfragst, dass Deine Abfrage so keinen Sinn macht, ist ein anderer Punkt.
Du solltest Dir mal überlegen was Du möchtest und was die beiden Bestandteile der Abfrage liefern, dann solltest Du von selbst auf die Lösung kommen.
 
Es kommt genau das raus, was Du von der Datenbank abfragst, dass Deine Abfrage so keinen Sinn macht, ist ein anderer Punkt.
Du solltest Dir mal überlegen was Du möchtest und was die beiden Bestandteile der Abfrage liefern, dann solltest Du von selbst auf die Lösung kommen.

Es kommt leider garnichts raus, er soll die datensätze auswählen die dir produkt_id = 4 haben und davon dann den kleinsten datensatz wählen der alleine vorkommt. lasse ich den filter mit der produkt_id weg gibt er ein ergebniss aus aber das geht dann über alle felder.

ein tip wäre nett und keine antwort die mich nicht weiterbringt.

*habs hinbekommen
 
Zuletzt bearbeitet:
Zurück
Oben