sql abfrage mit count und >

Alles, was MariaDB und MySQL betrifft, kann hier besprochen werden.

sql abfrage mit count und >

Postby red171 » 14. February 2005 02:00

ich hab n problem

ich da son problem mit ner ausrechnung von zahlen usw.

ich erklär mal kurz der aufbau

die tabelle in der atenbank sieht folgt aus

Code: Select all
CREATE TABLE `niv_contest` (
  `c_id` int(20) NOT NULL auto_increment,
  `c_pic` int(20) NOT NULL default '0',
  `c_user` varchar(60) NOT NULL default '0',
  `c_date` int(20) NOT NULL default '0',
  `c_vote` tinyint(4) NOT NULL default '0',
  PRIMARY KEY  (`c_id`)
) ENGINE=MyISAM


ich denke damit kann hier der ein oder andre etwas anfangen,

nun möchte ich eine Datenbank abfrage starten die die c_pic vergleicht, kommt jeweils mehrfach vor eine c_pic id

heist er soll mir alle mehrfachen einträge angeben, (nicht ausgeben oder zurück geben) diese counten, und mir dann alle , die mehr als 10 habenc_pic ids zurückgeben die mehr als 10 einträge haben.

hoffe das war einigermassen verständlich ausgedrückt..
is schon spät bzw früh...

weist nich wie ich das machen soll,
ob mit Count
MIN() oder dem größer<>kleiner verfahren
steh hier echt aufm schlauch

thx for help
red171
 

Ein Vorschlag (ungetestet)

Postby TConnect » 21. February 2005 16:13

Hi,

also wenn ich Dich richtig verstehe, dann willst Du nur Datensätze selektieren, dessen COUNT-Ergebnis (also die Menge des Vorkommens) größer 10 ist. Ich weiß nicht, ob SQL sich gleich schon in der ORDER BY Klausel schon auf die eben selektierten Ergebnisse beziehen kann, aber einen Versuch ist es wert:

SELECT c_id, c_pic, COUNT(c_pic) as count_pic FROM niv_contest WHERE count_pic > 10;

Wie gesagt, keine Ahnung, ob diese unmittelbare Rückreferenz funktioniert, oder nicht. Wenn nicht, dann kannst Du die WHERE Klausel weglassen und u.U. per Script unterscheiden, ob der Wert > 10 ist oder nicht. Wenn nicht, einfach nächsten Datensatz anspringen.

Grüße TConnect
TConnect
 
Posts: 100
Joined: 31. March 2004 22:26

Ähm Korrektur

Postby TConnect » 21. February 2005 16:14

Natürlich soll man nciht die WHERE Klausel weglassen, sondern die ORDER BY :D
TConnect
 
Posts: 100
Joined: 31. March 2004 22:26

Postby red171 » 22. February 2005 23:53

erstmal danke für die antwort,

nur es kommt ann folgendes zu stande

mysql error: Unknown column 'count_pic' in 'where clause'
mysql error number: 1054
mysql version: 4.1.7
php version: 5.0.3


hmpf :/ (is meine sql error function die das so ausgibt)

dieses hier ist z.z. auch nicht wirklich wichtig. nen weiteres thema von mir was ich noch offen hab ist mir wichtiger :) das mit den stats.
un das hier hat sich glaubsch fast erledigt wennsch keine lösung finde.

und so wie du das da gebaut hast glaub ich hast du das nocht ganz verstanden. d abfrage zu folge macht er nen count von ALLE vorhanden datensätzen oder? hmm
red171
 

Dann funktioniert die Rückreferenz nicht

Postby TConnect » 24. February 2005 09:25

Hi,

dann war der Versuch, die "quasi" Spalte count_pic, die ja die Ergebnismenge der verschiedenen Anzahlen beinhaltet, als Rückreferenz zu verwenden, wohl nicht erfolgreich. Offensichtlich kann MySQL derartige Spalten dann nur erzeugen, aber nicht zur Laufzeit mit in die WHERE Klausel packen.

Bleibt Dir wohl nur noch die Möglichkeit, alle Summen auszuwerten und im Script dann alles kleiner 10 links liegen zu lassen....


Grüße TConnect


PS: ob es vielleicht noch eine sinnvollere Lösung gibt, weiß ich leider auch nicht mehr.
TConnect
 
Posts: 100
Joined: 31. March 2004 22:26


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 13 guests