[mySQL] Frage zu einen kleinen Problem

Na du brauchst eine weitere Tabelle.
Nennen wir sie mal Bearbeitungsvorgang.

Diese enthält die ID des Bearbeiters, die ID des bearbeiteten Artikels, den Zeitpunkt der Bearbeitung und die Art der Bearbeitung (Erstellen, Ändern, Freigeben, Löschen ...)

Und dann join'st du eben nicht mehr von Redakteur zu Artikel, sondern von Redakteur zu Bearbeitungsvorgang zu Artikel.
 
Ok, das klingt logisch. Danke. Werde ich dann mal ändern.

Nur wie gebe ich dann die Daten aus? Wenn ich das jetzt mit meiner whilfe Schleife mache, gibt mir diese ja jeden Artikel aus, aber wenn jetzt mehrere Redakteure daran gearbeitet haben sollen diese ja nur bei diesen einen Artikel stehen.

Also so in etwa:

PHP:
while ($row2 = mysql_fetch_array($abfrage2))
{


Artikel #1: Was ist besser? Persil oder Hugo?
Datum: 29.09.1999
Erstellt von: Testperson, Testperson2, Testperson3 (hier könnten mehrere Redakteure stehen)

Artikel #2: So ein  Wetter!
Datum: 29.09.1999
Erstellt von: Testperson, Testperson2 (hier könnten mehrere Redakteure stehen)

}

Wenn du mir das jetzt noch erklären könntest, hätte ich es geschafft! :)
 
Entweder du arbeitest mit mehreren Abfragen:
PHP:
while($artikel = mysql_fetch_object($abfrage)) {
     // Artikel Ausgeben
    $autoren = "SELECT ..."

    while(....) {} // Autoren ausgeben

}

Oder du joinst ordentlich und sortierst nach Artikel-ID. Dann bekommst du in deinem zweiten Beispiel 2 Datensätze in der Form:
Code:
2|So ein  Wetter!|29.09.1999|Testperson
2|So ein  Wetter!|29.09.1999|Testperson2

Und beim Verarbeiten schaust du dann halt nach, ob du immer noch den selben Artikel bearbeitest, oder ob es sich um einen neuen handelt

PHP:
$letzte_id = ...
while (...) {
    if($letzte_id == $abfage->id) {
         nurAutorAusgeben();
    } else {
         ArtikelGesamtAusgeben();
    }

}
 
Entweder du arbeitest mit mehreren Abfragen:
PHP:
while($artikel = mysql_fetch_object($abfrage)) {
     // Artikel Ausgeben
    $autoren = "SELECT ..."

    while(....) {} // Autoren ausgeben

}
Belastet man dadurch die Datenbank nicht zu stark? Angenommen es wären so an die 10 Testberichte? Oder ist das üblich das man es so macht und es stellt keine Probleme dar?

Oder du joinst ordentlich und sortierst nach Artikel-ID. Dann bekommst du in deinem zweiten Beispiel 2 Datensätze in der Form:
Code:
2|So ein  Wetter!|29.09.1999|Testperson
2|So ein  Wetter!|29.09.1999|Testperson2
So will ich es nicht haben, so hatte ich es schon mal.

Aber so wie es aussieht bleibt mir wohl nur eines, dein erster Vorschlag. Finde es nur schade das man die beiden Abfragen nicht in einer lösen kann. Ich hab zwar mal was von SUB SELECT gehört, nur da kenne ich mich leider nicht so aus, falls das überhaupt mit sowas geht.
 
Natürlich - die erste Variante belastet die Datenbank deutlich stärker und würde ich auch nicht empfehlen.

Darum habe ich ja auch geschrieben
Oder du joinst ordentlich und sortierst nach Artikel-ID.

Und warum willst du das nicht so? ?
Das ist nämlich die aus Datenbanksicht korrekteste Darstellung des Sachverhalts.
Und ein Subselect würde dir da sowieso nicht weiterhelfen.

Das was du willst, müsstest du über temporäre Tabellen lösen, die für jeden gefundenen Redakteur geupdatet werden - und da brauchen wir von Performance gar nicht erst anfangen.

Du kannst aus der 2ten Variante alle Informationen gewinnen, die du brauchst - du musst sie nur auswerten.
 
Darum habe ich ja auch geschrieben

Und warum willst du das nicht so? ?
Das ist nämlich die aus Datenbanksicht korrekteste Darstellung des Sachverhalts.
Da hatte ich jetzt einen Denkfehler, ich habe mir das Beispiel noch mal angesehen von dir, und du hast recht! Da sollte so funktionieren. Werde ich dann heute gleich alles ausprobieren, danke dir!

Ich werde das Thema mal als "erledigt" markieren, falls ich doch noch Fragen habe, melde ich mich hier einfach wieder.

Danke dir und allen anderen auch! :)
 
Zurück