anzeigen wenn mehr als 2 gleiche

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

anzeigen wenn mehr als 2 gleiche

Postby andreas0063 » 06. February 2006 22:47

Hallo zusammen

mit:

Code: Select all
$query= "SELECT * FROM `allerace` ORDER BY `name`";
$sql = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());


lese ich ja alle Namen aus der Tabelle. Jetzt möchte ich aber nur die Namen angezeigt haben, wenn mehr als 2 gleiche Namen vorhanden sind, also im minimum 3 gleiche Namen und mehr.
Wie ist das abzufragen?
Besten Dank für eure Hilfe
Gruss Andreas
andreas0063
 
Posts: 35
Joined: 30. November 2005 15:36

Postby KingCrunch » 06. February 2006 23:11

Geht scho, irgendwie mit "COUNT x" in Verbindung mit mit Where. Zumindest ist das mein erster Ansatz. Vielleicht konnte ich da schon ein wenig Hilfe bieten.
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Hanspeter Thöni » 07. February 2006 08:54

Ich weiss zwar nicht wie das Feld mit den Namen heisst, sagen wir es heisst 'Name':
Code: Select all
SELECT Name, COUNT(Name) as Anzahl
FROM allerace
GROUP BY Name
HAVING (Anzahl>2)
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby andreas0063 » 07. February 2006 10:58

krig das nicht hin, sch.....

also in MYSQL heisst die Spalte teamname und die Tabelle allerace.
Ich habe dort Namen die alleine stehen und solche die 3x und mehr auftauchen.

Wie muss ich das genau abfragen ???
andreas0063
 
Posts: 35
Joined: 30. November 2005 15:36

Postby KingCrunch » 07. February 2006 11:13

Hat er das nicht gesagt?
Code: Select all
SELECT teamname, COUNT(teamname) as Anzahl
FROM allerace
GROUP BY teamname
HAVING (Anzahl>2)

Anzahl ist die Anzahl der Einträge für teamname
Having sagt, dass nur Einträge mit einer Anzahl größer 2 geholt werden
Group gruppiert die Einträge nach teamname
usw

Also eigentlich müsste es das sein ...
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby andreas0063 » 07. February 2006 11:13

Ok habe ich. Jetzt sollten aber die Namen noch dabei sein :(

Code: Select all
SELECT teamname, name, vorname COUNT(teamname) as Anzahl
          FROM allevolk
          GROUP BY teamname
          HAVING (Anzahl>2)

Wie geht den das ????
andreas0063
 
Posts: 35
Joined: 30. November 2005 15:36

Postby andreas0063 » 07. February 2006 12:42

schon wieder ein kleines Stück weiter.
Code: Select all
SELECT count(*),teamname, name, vorname
          FROM allerace
          GROUP BY teamname
          HAVING count(*)>2

Es würden drei Stück mit dem selben Namen bestehen. Mit dem Code bekomme ich aber bis jetzt nur den ersten angezeigt.
andreas0063
 
Posts: 35
Joined: 30. November 2005 15:36

Postby KingCrunch » 07. February 2006 15:25

Code: Select all
COUNT (*)

Zählt alle Datensätze einer Tabelle.

Ich weiß aber auch nicht genau was du jetzt vorhast. Willst du nur die Datensätze, bei denen sowohl "name" und "teamname" mehrfach auftaucht, oder willst du alle Datensätze, bei denen "teamname" mehrfach auftaucht, bloss zusätzlich noch den Namen auslesen?
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Hanspeter Thöni » 07. February 2006 16:55

Jetzt wird's knifflig.

Code: Select all
SELECT teamname,name,vorname
FROM allerace
WHERE teamname IN (
  SELECT teamname
  FROM allerace
  GROUP BY teamname
  HAVING (COUNT(*) >2)
)


Hoffe habe keine Syntaxfehler eingebaut
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby andreas0063 » 08. February 2006 12:52

Danke Dir .... es funktioniert .... fast :D
Jetzt wäre nur noch ein ganz kleines Problem. Die ohne einen Teamnamen, also in der Tabelle allerace in der spalte teamnamen die Zelle leer bleibt, werden auch noch angezeigt ..... :(
andreas0063
 
Posts: 35
Joined: 30. November 2005 15:36

Postby Hanspeter Thöni » 08. February 2006 13:21

andreas0063 wrote:Jetzt wäre nur noch ein ganz kleines Problem. Die ohne einen Teamnamen, also in der Tabelle allerace in der spalte teamnamen die Zelle leer bleibt, werden auch noch angezeigt ..... :(

Naja....
Code: Select all
SELECT teamname,name,vorname
FROM allerace
WHERE teamname IN (
  SELECT teamname
  FROM allerace
  GROUP BY teamname
  HAVING (COUNT(*) >2)
) AND teamname IS NOT NULL


Vorausgesetzt das datenbankfeld ist wirklich (wie es sich gehört) NULL und nicht etwa ein leerer String.

Edit: Quote geflickt
Last edited by Hanspeter Thöni on 08. February 2006 14:40, edited 2 times in total.
Gruss Hanspeter
User avatar
Hanspeter Thöni
 
Posts: 233
Joined: 17. August 2004 10:29
Location: Schweiz

Postby andreas0063 » 08. February 2006 13:37

ich zieh den Hut. Da ist jemand der nicht nur Sprüche drauf hat :!: :!: :!:
Habe nur noch ORDER BY teamname eingefügt am Schluss, damit das ganz schön der Reihe nach geht.
Ich hoffe das ich wieder auf dich treffe sollte ich ein weiteres Problem bekommen. Nochmals vielen Dank!
andreas0063
 
Posts: 35
Joined: 30. November 2005 15:36

Prob mit ANzahlanzeige

Postby Last Evil » 01. July 2006 21:33

hi hanspeter,

wie kann ich die datansatzanzeige für doppelte datansätze in den untenstehenden script einbinden???

<?php
// Die Informationen werden aus der Datenbank geholt
$db = mysql_connect("localhost","root","");
$res = mysql_db_query("frank", "SELECT * , COUNT( Name ) AS Anzahl FROM yugioh GROUP BY name HAVING (Anzahl >=1)");
$i = Count(name);
mysql_close($db);

// Die Datensätze werden einzeln gelesen
echo "<TABLE BORDER=1 align=center>";
echo "<tr> <td align=center><B>Name</B></td><td align=center><B>Stufe</B></td><td align=center><B>Angriff</B></td><td align=center><B>Verteidigung</B></td><td align=center><B>lfd. Nr.</B></td><td align=center><b>Anzahl</b></td> </tr>";
while($zeile = mysql_fetch_array($res))
{
echo "<tr><td>" . $zeile["name"] . "</td><td>" . $zeile["stufe"] . "</td><td>" . $zeile["ang"] . "</td><td>" . $zeile["ver"] . "</td><td>" . $zeile["intnr"] . "</td><td>" . $zeile["$i"] . "</td></tr>";
}
echo "</table>";

?>

mfg last evil
Last Evil
 
Posts: 3
Joined: 01. July 2006 20:19


Return to MariaDB - MySQL

Who is online

Users browsing this forum: No registered users and 32 guests