doppelte Einträge von mehreren spalten in verschiedenen Zeilen in abhängigkeit vom Datum anzeigen

Flieschi

Member
6 Januar 2011
6
0
Hallo Leute,

habe ein Problem und hoffe Ihr könnt mir helfen.
In meiner Tabelle sind Kursteilnehmer (tn1,tn2,tn3...)gelistet. Ich möchte nun vergleichen ob ein Kursteilnehmer sich bei zwei verschiedenen Kursen, die aber am gleichen Tag sind, angemeldet hat und mir dann den oder die doppelten Namen anzeigt.

Ich habe folgende Tabelle in der Datenbank:
Tabellenkname: kurse

¦ id ¦ kurs ¦ datum ¦ tn1 ¦ tn2 ¦ tn3 ¦ tn4 ¦ tn5 ¦
------------------------------------------------------------------------
¦ 1 ¦ Kochen ¦ 2010-12-31 ¦ Meier ¦ Huber ¦ Schmid ¦ Holzer ¦ Fuchs ¦
------------------------------------------------------------------------
¦ 2 ¦ Tennis ¦ 2010-12-31 ¦ Lipper ¦ Reinert ¦ Schanzl ¦ Meier ¦ Wirt ¦

ich möchte nun das mir die Datenbank überprüft ob das Datum gleich ist und wenn Ja das es mir die doppelten Einträge mit dem Datum anzeigt, und zwar nur !!! die doppelten Einträge.

Also diese Ausgabe: 2010-12-31 Meier

Und wenn die Tabelle so aussieht:

¦ id ¦ datum ¦ kurs ¦ tn1 ¦ tn2 ¦ tn3 ¦ tn4 ¦ tn5 ¦
------------------------------------------------------------------------
¦ 1 ¦ Kochen ¦ 2010-12-31 ¦ Meier ¦ Huber ¦ Schmid ¦ Holzer ¦ Fuchs ¦
------------------------------------------------------------------------
¦ 2 ¦ Tennis ¦ 2010-12-31 ¦ Fuchs ¦ Reinert ¦ Schanzl ¦ Meier ¦ Wirt ¦

dann diese Ausgabe: 2010-12-31 Meier Fuchs

Wenn kein doppelter Name beim gleichen Datum besteht dann soll nichts angezeigt werden.

Ich habe es mit folgendem PHP Code versucht:
PHP:
<?php
$sql = "SELECT datum,tn1,tn2,tn3,tn4,tn5 FROM kurse GROUP BY datum HAVING COUNT(datum) > 1";
      
    $result = mysql_query($sql) OR die(mysql_error());
        while($row = mysql_fetch_assoc($result)) {
        	
echo $row['datum'];
echo ' ';
echo  $row['tn1'];
echo ' ';
echo  $row['tn2'];
echo ' ';
echo  $row['tn3'];
echo ' ';
echo  $row['tn4'];
echo ' ';
echo  $row['tn5'];
}
?>

ich bekomme zwar das doppelte Datum angezeigt aber auch die komplette Zeile.
Also: 2010-12-31 Meier Huber Schmid Holzer Fuchs :(

Könnt Ihr mir helfen? ich suche und versuche schon seit Stunden mit versch. select join ect. herum, aber ich bekomme es nicht hin.

Vielen Dank im Voraus
 
Zuersteinmal hast du schon die 1. Normalform gebrochen, von daher lässt sich diese Aufgabe mit deiner Datenbankstruktur nicht wirklich lösen, bring es in die 3. Normalform und man kann dir weiterhelfen ;)
 
Dein Tabellendesign verstößt gegen die 1NF. So wird das freilich nix.

P.S. Bitte
-Tags
im Forum für Tabellen nehmen. So wie in deinem Posting kann kein Mensch lesen, welche Spalte wohin gehört.
 
Ich bin ein Anfänger in Sachen php/mysql. Bitte schreib mir wie meine Tabelle in der 3. Form aussehen muss. Ich ändere alles um nur bitte sag mir wie und die entsprechende Lösung.:D

(Bin am verzweifeln da etliche Stunden Kopfzerbrechen wahrscheinlich um sonst waren wegen dem Formfehler)

Bitte helft mir :D

Vielen, Vielen Dank im Voraus
 
Als Anfänger ist es umso wichtiger, gleich alles richtig zu machen, um sich nicht Falsches anzugewöhnen. Hast du den Wikipedia-Artikel gelesen und verstanden oder noch Fragen dazu?
 
Bin gerade dabei. ich soll also mehrere Tabellen erstellen oder?
Ich wäre Dir aber sehr dankbar, wenn du mir als Profi auf diesem Gebiet die Lösung schreiben könntest, dann lern ich am meisten und mache keine Anfängerfehler.

Please :(
 
Mit der Lösung lernst du nicht am meisten, sondern gar nix :roll:
Ja, mehrere Tabellen. Die Beispiele mit den CDs in der Wikipedia sind sehr anschaulich.
 
komme nicht ganz drauf.
muss ich die Tabelle in zwei oder drei tabellen aufteilen?

hätte gedacht:
Tabelle1: id kurs datum
Tabelle2: datum teilnehmer

stimmt das ?
 
das wäre eine Möglichkeit, aber wenn an einem Datum zwei Kurse laufen, zu welchem Kurs zählt die Anmeldung?
Deine 2. Tabelle muss also die Kurs-Id haben.

Wenn die gleichen Kurse an mehreren Daten vorkommen können, solltest du aber noch ein wenig umbauen.
 
Eine grundsätzliche Frage: Was ist ein "Kurs"?
Ist ein "Kurs" die Art einer Lehrveranstaltung "Kochen", "Backen", "Töpfern"?
Oder ist ein "Kurs" eine Instanz von obigem?

Ich würde nämlich sagen: Letzteres.

Damit hätte ich 4 Tabellen:
  • Kurse
  • Teilnehmer
  • "Kursinstanzen", also welcher Kurs findet wann statt
  • Kursteilnehmer
Dein aktuelles Modell würde es nicht erlauben, dass zwei verschiedene "Meier" teilnehmen.
 
Sorry Kurse war ein irreführendes Beispiel.



Es sind Projekte wo unsere Mitglieder teilnehmen (Meier, Fuchs). Also keine neuen dazu kommen. (wie bei einem Kochkurs)
Es darf halt nicht passieren das der Mitarbeiter "Meier" an zwei Zeitgleichen Projekten versehentlich bei beiden eingeteilt wird.

Würden dann 2 Tabellen reichen?

Tabelle1: id, datum, projekt, teilnehmer(Mitarbeiter)
Tabelle2: id, datum, teilnehmer(Mitarbeiter)
 
Zuletzt bearbeitet:
Sorry Kurse war ein irreführendes Beispiel.
Wie du die Objekte nennst, ändert nix an der Problemstellung.
Außerdem solltest du Tabellen nicht einfach durchnummerieren, sondern ihnen aussagekräftige Namen geben.
Tabelle1: id, datum, projekt, teilnehmer(Mitarbeiter)
Tabelle2: id, datum, teilnehmer(Mitarbeiter)
Quark.
Tabelle1: Das Projekt ist abhängig von Datum. Ich kann mir als Teilnehmer nicht aussuchen, wann das Projekt is. Bei dir geht das.
Tabelle2: Als Teilnehmer kann ich mir das Datum aussuchen? Ne. Das Datum wird vom Projekt vorgegeben, s. Tabelle1. Und für was steht die ID? Is das ein Primär- oder ein Fremdschlüssel?
 
Habs hinbekommen mit vorerst 2 tabellen :)

Danke für den Link zu NF1-NF3

Ihr seit echt Spitze
 
Zuletzt bearbeitet: