SQL: einen Datensatz doppelt auswählen

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

SQL: einen Datensatz doppelt auswählen

Beitrag von badera » 07.06.2007 08:22:12

Ich habe eine Frage bezüglich SQL. Ich versuche diese so gut wie möglich zu umschreiben; hoffentlich versteht ihr die Problematik.
Ich habe eine Tabelle als Beispiel wie folgt:

Code: Alles auswählen

ID   |    Titel      |     Text   |    Autor
--------------------------------------------------
1    | Artikel A     | blablbaasf | Hans
2    | Artikel B     | asdfdas    | Fritz
3    | Artikel C     | fghjk      | Max, Thomas
4    | Artikel D     | asdfasjk   | Peter
5    | Artikel E     | wretasdf   | Max
Nun kann ich per SELECT und ORDER die Tabelle entsprechend sortieren lassen und ausgeben...
Wenn ich jetzt aber nach Autor sortiere, dann möchte ich, dass dort, wo zwei Autoren stehen, der Datensatz doppelt selectiert wird; im obigen Beispiel möchte ich also beim Sortieren nach Autor folgende Ausgabe:

Code: Alles auswählen

2    | Artikel B     | asdfdas    | Fritz
1    | Artikel A     | blablbaasf | Hans
5    | Artikel E     | wretasdf   | Max
3    | Artikel C     | fghjk      | Max, Thomas
4    | Artikel D     | asdfasjk   | Peter
3    | Artikel C     | fghjk      | Thomas, Max
Wie jetzt z.B. die Namen zu tauschen sind ist mir klar; dazu hat man diverse STRING-Funktionen, die man direkt im SELECT verwenden kann. Aber wie kann ein Datensatz "duppliziert" werden? - Hoffentlich ist die Fragestellung verständlich. Kann mir jemand auf den Sprung helfen? - Besten Dank schon im Voraus!
- Adrian

Benutzeravatar
brill
Beiträge: 354
Registriert: 04.02.2005 10:37:34
Lizenz eigener Beiträge: GNU General Public License

Beitrag von brill » 07.06.2007 08:27:28

warum machst du den autor nciht in andere Tabelle und arbeitest mit einer Relation,

Also ungefähr so :

Artikel_ID | Autor
--------------------------------------------------
1 | Hans
2 | Fritz
3 | Max
3 | Thomas
4 | Peter
5 | Max

Beim Select mußt du dann die Tabellen joinen Tabellen.

Brill

Benutzeravatar
Bert
Beiträge: 3751
Registriert: 16.07.2002 14:06:52
Wohnort: Dresden
Kontaktdaten:

Beitrag von Bert » 07.06.2007 10:24:02

Wie mein Vorposter schon sagt. Dein Datenmodell ist nicht normalisiert [1].
Also z.B die Tabellen ARTIKEL und AUTHOR. Diese Kannst Du dan bei der Abfrage entsprechend joinen.
In der ARTIKEL Tabelle hast Du dann anstelle der bsiherigen Spalte AUTOR eine Spalte AUTOR_ID, welche per Forreign Key auf die Spalte ID in der Tabelle AUTOR zeigt.

[1] http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

Gruß Bert
Programmer: A biological machine designed to convert caffeine into code.
xmpp:bert@debianforum.de

Benutzeravatar
badera
Beiträge: 643
Registriert: 20.05.2004 20:01:50
Wohnort: Schweiz

Beitrag von badera » 07.06.2007 16:29:48

Besten Dank für eure Informationen. Dann werde ich wohl die Tabellen reorganisieren.
In diesem Fall funkioniert es gar nicht, was ich vor hatte?

Antworten