SQL & Datenbankprogrammierung
Von: Оlіνеr Еіkеl, 10.3.2010 17:22 Uhr
Liebe/-r Experte/-in,
ich ahbe eine Frage zu mysql. Kann ich Abfragen über mehrere Tabellen machen, wobei ich aus einer Tabelle mehrere Werte brauche?

Beispiel:

Ich habe 5 Tabellen:
stereoanagen
hersteller
verstaerker
dvdspieler
boxen
id ist natürlich in allen drin und pk und ai.

In Hersteller stehen die Firmennamen, die Webseiten, Ansprechpartner usw. drin.

In DVDspieler verschiedene Datensätze wie
hersteller_id, formate,farbe usw.

In Verstaerker habe ich leistung, klirrfaktor,hersteller_id,farbe

In der Tabelle boxen habe ich hersteller_id, leistung.farbe,groesse usw.

In Stereroanlagen haben ich eine Zusammenstellung der Komponenten.

dvdplayer_id,boxen_id,verstaerker_id, usw.

Nun möchte ich eine Übersicht der zusammengestellten Anlage haben.

Wenn ich nun:
[code]
select dvdplayer.*,verstaerker.*,boxen.*,hersteller.firmenname from hersteller,verstaerker,boxen,dvdplayer where stereoanlage.id=1 and verstaerker.hersteller_id=hersteller.id and dvdplayer.hersteller_id=hersteller.id and boxen.hersteller_id=hersteller.id
[/code]
abfrage kann es nur schief gehen, da mysql so nicht weiss und ich dann auch nicht welcher firmenname wo zu gehört. Ich möchte sowas rausbekommen wie:
Stereoanlage Home
Verstärker ->Hersteller: Techniks
Verstärker ->Leistung: 500

DVD Player->Hersteller: Aiwa
DVD Player ->Formate: mp3,jpg

Boxen-> Hersteller: MAgnat
Leistung: 1000
Ist group vbiellicht irgendwie das zauberwort?

Danke für eure Mühe!
Oliver



  1. Antwort von tһоrn 1
    Re: mysql group
    Hi Oliver,

    außer dem herstellername-problem enthält dein code noch einen Fehler:
    where stereoanlage.id=1
    .. kann nicht gehen, deine Komponenten-Tabellen enthalten keine stereoanlage_id, und die Tabelle stereoanlage kommt im select gar nicht vor - das wird vom mysql bereits mit 'Unknown column' abgelehnt.

    Du brauchst ein ziemlich kompliziertes und langes Statement, da empfehlen sich Aliasnamen für die Tabellen.
    Weiterhin benötigt jede Komponente ihren eigenen Herstellernamen, der über [komponente].hersteller_id = hersteller.id gefunden wird. Da das Feld in hersteller immer firmenname heisst, muss es bei Mehrfachverwendung in einem select ebenfalls mit unterschiedlichen Aliassen versehen werden. Und schließlich muss die Tabelle hersteller mit jeder komponente separat verknüpft werden, damit sind Tabellen-Aliasse sowieso zwingend.
    Bei der alias-Syntax ist noch zu beachten, dass die Tabellen-Aliasse im FROM definiert werden, aber im SELECT bereits verwendet werden können.

    Also..
    SELECT
    -- evtl. irgendwas "eigenes" aus stereoanagen
    S.name, S.preis,
    -- Komponenten und zugehöriger Hersteller
    V.*, H_V.firmenname AS verst_hersteller,
    B.*, H_B.firmenname AS boxen_hersteller,
    D.*, H_D.firmenname AS dvdpl_hersteller
    FROM
    stereoanagen AS S,
    verstaerker AS V,
    hersteller AS H_V,
    boxen AS B,
    hersteller AS H_B,
    dvdplayer AS D,
    hersteller AS H_D
    WHERE
    V.id = S.verstaerker_id
    AND
    H_V.id = V.hersteller_id
    AND
    B.id = S.boxen_id
    AND
    H_B.id = B.hersteller_id
    AND
    D.id = S.dvdplayer_id
    AND
    H_D.id = D.hersteller_id
    AND
    -- evtl. eine bestimmte anlage, sonst alle
    S.id = 1

    lass mal hören, ob's tut ...

    Gruß
    Thomas
    3 Kommentare
    • Re^2: mysql group
      Hi Thomas,,


      danke für Deine Ausführlichen Ausführungen! So in etwa hatte ich mir das auch vorgestellt. Allerdings hatte mir ein User einen Haken der Alias-variante aufgegeben.

      Und zwar wenn zB der Hersteller Akai Pleite geht und daher gelöscht wird stimmen die Kriterien nicht mehr und die Stereoanlagenkombi geht flöten, wenn zufällig ein AKAI Verstärker dabei ist.Verdammt und die waren gut!
    • Re^2: mysql group
      Hi Thomas,
      der Ansatz von Kai war der "etwas bessere".

      Denn ein Problem hätte die Lösung ohne join:
      Sollte aus irgend einem Grunde mal der Hersteler gelöscht werden. (Pleite, Fehler, Praktikant),
      schlägt die ganze Abfrage fehl.
      So steht da nur in einer Spalte ein NULL.
      Danke für Deine Mühe!
      Oliver
    • von tһоrn 0
      Re^3: mysql group
      Hi,

      ja, einen JOIN wollte ich dir nicht zumuten ;-)
      Allerdings löscht man in echten Datenbeständen auch keine Stammdaten, sondern versieht sie mit einem flag z.B. 'deleted' - das kann man dann wieder prüfen bei Abfragen, bei denen dieser Status relevant ist. Du würdest dann eine Liste aller jemals definierten stereoanlagen bekommen, wenn du das kriterium nicht verwendest, und eine weitere der _lieferbaren_ anlagen unter Verwendung von "... AND hersteller.deleted = 0". Vorteil: der Name des inzwischen nicht mehr existierenden Herstellers bleibt in jedem Fall verfügbar. Das ist bzgl. der Semantik der Daten korrekter, denn ein AKAI-Verstärker hat keinen Hersteller namens "NULL" - sondern eben AKAI, auch wenn die inzwischen pleite sind.

      Gruß
      Thomas
  2. Antwort von Dеr_Dіrk 0
    Re: mysql group
    Hallo Oliver,

    ausschlaggebend dürfte der Aufbau der Tabelle stereoanlage(n?!?) sein. was für Felder sind da genau drin?

    VG Dirk
    2 Kommentare
    • Re^2: mysql group
      Hi Dirk,

      das war schnell. Danke!
      In der tabelle Stereoanlagen sind neben dem schlüssel nur die Ids der Bausteine drin und der preis.

      Also
      id(key)
      dvd_player_id
      verstaerker_id
      boxen_id
      preis
    • Re^3: mysql group
      [code]
      SELECT * FROM
      hersteller,verstaerker,boxen,dvdplayer, stereoanlage
      WHERE
      stereoanlage.id=1
      AND
      verstaerker.id=stereoanlagen.verstaerker_id
      AND
      dvdplayer.id=stereoanlagen.dvd_player_id
      AND
      boxen.id=stereoanlagen.boxen_id
      [/code]

      würde ich mal probieren, sofern ich Dein Problem richtig verstanden habe. Rufst Du das über PHP ab? Dann würde ich ggf. mehrere Abfragen machen, da Du in unterschiedlichen Tabellen teilweise gleiche Labels benutzt und dadurch leicht die Übersicht verloren gehen könnte.

      VG Dirk
  3. Antwort von Ρаtrісk (abgemeldet) 0
    Re: mysql group
    Hallo Oliver,

    ich möchte dir jetzt nicht die komplette Lösung vorschreiben. Aber was du brauchst sind joins.

    Eine Anleitung ist hier zu finden:
    http://dev.mysql.com/doc/refman/5.1/de/join.html

    Solltest dich nach dem durchlesen nicht auskennen kannst dich gerne noch mal melden.

    Lg
    1 Kommentare
    • Re^2: mysql group
      Danke.
      Auch das war sehr schnell. Waow. join...
      Ich schau mal rein.
  4. Antwort von fеһlаlаrm 0
    Re: mysql group
    Hallo,

    was spricht dagegen wenn du die einzelnen Komponenten einer Stereoanlage einzeln abrufst?

    Also ungefähr so:

    SELECT d.format, h.firmenname
    FROM dvdplayer d, hersteller h
    WHERE d.hersteller_id = h.id

    und das jetzt für Dvd-Player, Verstärker usw.
    4 Kommentare
    • Re^2: mysql group
      Hi,

      danke für die superschnelle Antwort. Hm, 3 einzelne Abfragen? Ginge natürlich auch. Ist aber doch nicht ganz so schön, oder?
    • Re^3: mysql group
      Alternativ:

      SELECT d.format, d.modell, v.modell, v.leistung, h1.firmenname AS dvd_fname, h2.firmenname AS v_fname, s.name
      FROM dvdplayer d, hersteller h1, verstaerker v, hersteller h2, stereoanlage s
      WHERE
      d.hersteller_id = h1.id AND
      v.hersteller_id = h2.id AND
      s.dvdplayer_id = d.id AND
      s.verstaerker_id = v.id


      Allerdings finde ich die Lösung mit den einzelabfragen nicht unschön, es kommt auf die Implementierung an.
    • Re^4: mysql group
      Oha. Danke:
      h1.firmenname AS dvd_fname, h2.firmenname FROM dvdplayer d, hersteller h1, verstaerker v, hersteller h2

      Gibts dafür nen Namen. Ist das sowas wie ein Alias? Die Tabellen h1 und h2 sind, wenn ich es verstanden habe, sowas wie eine "künstliche" Tabelle?
    • Re^5: mysql group
      Mit 'As' kannst du eine Spalte umbenennen. Die Tabellen h1 und h2 sind einfach eine Abkürzung die man nach dem bekannt machen der Tabelle anhängen kann.
  5. Antwort von Ѕіlkе 0
    Re: mysql group
    Moin Oliver, ich ahbe eine Frage zu mysql. Kann ich Abfragen über mehrere
    Tabellen machen, wobei ich aus einer Tabelle mehrere Werte
    brauche?

    Beispiel:

    Ich habe 5 Tabellen:
    stereoanagen
    hersteller
    verstaerker
    dvdspieler
    boxen
    id ist natürlich in allen drin und pk und ai.

    In Hersteller stehen die Firmennamen, die Webseiten,
    Ansprechpartner usw. drin.

    In DVDspieler verschiedene Datensätze wie
    hersteller_id, formate,farbe usw.

    In Verstaerker habe ich leistung,
    klirrfaktor,hersteller_id,farbe

    In der Tabelle boxen habe ich hersteller_id,
    leistung.farbe,groesse usw.

    In Stereroanlagen haben ich eine Zusammenstellung der
    Komponenten.

    dvdplayer_id,boxen_id,verstaerker_id, usw.

    Nun möchte ich eine Übersicht der zusammengestellten Anlage
    haben.

    Wenn ich nun:
    [code]
    select dvdplayer.*,verstaerker.*,boxen.*,hersteller.firmenname
    from hersteller,verstaerker,boxen,dvdplayer where
    stereoanlage.id=1 and verstaerker.hersteller_id=hersteller.id
    and dvdplayer.hersteller_id=hersteller.id and
    boxen.hersteller_id=hersteller.id
    [/code]
    abfrage kann es nur schief gehen, da mysql so nicht weiss und
    ich dann auch nicht welcher firmenname wo zu gehört. Ich
    möchte sowas rausbekommen wie:
    Stereoanlage Home
    Verstärker ->Hersteller: Techniks
    Verstärker ->Leistung: 500

    DVD Player->Hersteller: Aiwa
    DVD Player ->Formate: mp3,jpg

    Boxen-> Hersteller: MAgnat
    Leistung: 1000
    Ist group vbiellicht irgendwie das zauberwort?
    Ich verstehe das Problem nicht ganz - kannst du mal ein Abfrageergebnis schicken und dazu sagen, was deiner Meinung nach anders aussehen sollte? Wobei die Abfrage in der Form nicht funktionieren wird, du verwendest ein Feld (stereoanlage.id), für das gar nicht die Tabelle abgefragt wird.

    Gruß

    - Silke -
    4 Kommentare
    • Re^2: mysql group
      Hallo Silke,
      das ist superschnell! Danke.

      Also, ich versuche es mal zu verdeutlichen:
      Tabelle Stereoanlagen:

      id(key)
      dvd_player_id
      verstaerker_id
      boxen_id
      preis

      In DVDspieler
      id(key)
      hersteller_id
      formate
      farbe

      In Verstaerker:
      id(key)
      leistung,
      klirrfaktor
      hersteller_id
      farbe

      Rauskommen soll
      DVDPlayerhersteller
      Verstärkerhersteller
      Boxenhersteller usw.
      Also brauche ich 3x Inhalte aus der Tabelle Hersteller
      (where dvdplayer.hersteller_id=hesteller.id,verstaerker.hersteller_id=hesteller.id,boxen.hersteller_id=hesteller.id

      Ein Hinweis ist join...

      Ixch hoffe nun ists klarer geworden? Sind halt jeweils Abfragen über 3 tabellen.
    • von Ѕіlkе 0
      Re^3: mysql group
      Ah, du möchtest also Informationen über drei verschiedene Geräte aus den jeweils selben Tabellen holen. Ich würde es für am Sinnvollsten halten, das tatsächlich in drei Abfragen zu machen - was spricht dagegen?
    • Re^4: mysql group
      Hallo Silke,

      danke für Deine Mühe! Kai hatte mir letzten Endes den richtigen Ansatz gegeben.

      Kompliziert, aber genial!

      Gruß
      Ollie
  6. Antwort von Βеаt Vоntоbеl (abgemeldet) 0
    Re: mysql group
    Hallo Oliver

    Ich nehme an (so wie ich Deine Frage verstehe), dass in Deiner Query noch die
    Tabelle "stereoanlagen" fehlt? Die wäre ja so quasi der Ausgangspunkt der Query?

    So dass Du quasi diese Query wolltest (mit "modernerer" JOIN-Syntax), noch ohne
    die Hersteller:

    SELECT …
    FROM stereoanlagen
    INNER JOIN verstaerker
    ON stereoanlagen.verstaerker_id = verstaerker.id
    INNER JOIN dvdplayer
    ON stereoanlagen.dvdplayer_id = dvdplayer.id
    … (dito für Boxen und was immer)

    Du könntest nun die Tabelle Hersteller mehrfach dazu JOINen, für jeden Objekt-
    Type, sie benötigt dann jeweils einen eigenen Alias-Namen:

    SELECT …
    FROM stereoanlagen
    INNER JOIN verstaerker
    ON stereoanlagen.verstaerker_id = verstaerker.id
    INNER JOIN hersteller AS verstaerker_hersteller
    ON verstaerker.hersteller_id = verstaerker_hersteller.id
    INNER JOIN dvdplayer
    ON stereoanlagen.dvdplayer_id = dvdplayer.id
    INNER JOIN hersteller AS dvdplayer_hersteller
    ON dvdplayer.hersteller_id = dvdplayer_hersteller.id
    … (dito für Boxen und was immer)

    Das wäre wohl so etwas, was Du suchst? GROUP BY hilft Dir, so wie ich Deine
    Frage verstehe, sicher nicht.

    Beste Grüsse
    1 Kommentare
    • Re^2: mysql group
      Danke! Oha. Ist glaube ich was für in neuer frische morgen früh!
  7. Antwort von Ρrоtеuѕ (abgemeldet) 0
    Re: mysql group
    Hallo,

    also nach einem Blick auf deine Homepage solltest du eigentlich die Fragen selbst beantworten können.
    Aber ok. ich ahbe eine Frage zu mysql. Kann ich Abfragen über mehrere
    Tabellen machen, wobei ich aus einer Tabelle mehrere Werte
    brauche?
    Grundsätzlich ja.
    Irgendwo muss jedoch stehen, was in einer Anlage alles drin sein soll.
    Also benötigst du eine Haupttabelle. Darin enthalten sind Spalten für die Verknüpfung mit den anderen Tabellen. Also wenn in der DVD-Player-Tabelle ein Player mit der ID 17 drinsteht, dann muss der in der Haupttabelle in der Spalte DVD auch mit 17 eingetragen sein.
    Das Geheimnis dahinter nennt sich Entity-Relationship-Modell oder kurz ERM. Da definiert die Beziehungen zwischen verschiedenen Tabellen.
    Die Ausgabe erfolgt dann mitunter nur mit einer Abfrage, bei der die Tabellen mit dem SQL-Befehl JOIN verbunden sind.

    Um das hier aller erkären zu können, müßte ich anfangen ein Buch zu schreiben :-))
    Du solltest dich ein wenig im Internet schlau machen über: ER-modell, Tabellenbeziehungen, SQL Syntax mit JOIN, Normalformen bzw. 2+3. Normalform.

    Probier mal den: http://www.tecchannel.de/server/sql/1744994/business...

    Wenn du damit einigermaßen durch bist, fängst du an deine Tabellen bzw. deine datenbank neu zu medellieren.
    Einfach so ein paar Tabellen anlegen und dann abfragen läuft nicht. Da steckt in jedem Falle eine tiefere Logik dahinter, wie bei allen Dingen in der Programmierung.

    Ich hoffe, das regt mal eine wenig an.
    In welcher Fachrichtung hast du denn deinen MCP gemacht ?

    Gruß
    Proteus
    1 Kommentare
    • Re^2: mysql group
      Hallo ,
      danke für die schnelle Antwort.

      So grün bin ich ja nun auch nicht mehr. Nur gehöre ich leider nicht den Leuten die alles wissen und nichts mehr wissen wollen. ;) Natürlich kann ich auch 5 einzelne Abfragen machen, aber man will ja auch weiter kommen. ;)

      Der MCP war mal in NT4, der CNE in NW 5.

      ER ist klar.
      Also:
      Die Tabelle Stereoanlagen enthält (fast) nur die ids der Geräte. Sie ist so zu sagen das zentrum. Dort werden die zusammengestellen pakete "verwaltet". Also DVD von Technics, Verstärker von Sonie, Boxen von Magnat usw.

      Wo ich noch drüber stolpere ist 2 x hersteller mit unterscheidlichen eigenschaften/beziehungen in einer sql-Abfrage.

      Also eine Ausgabe der Hersteller für dvd und einmal den hersteller für verstärker

      Hier habe ich einige Anregungen bekommen.
  8. Antwort von dаnіеlwоlfgаng 0
    Re: mysql group
    Hi!

    ich denke dass was du suchst ist ein JOIN.

    Infos darüber findest du unter: http://dev.mysql.com/doc/refman/5.1/de/join.html

    wenn du dazu spezielle Fragen hast kannst du dich ja nochmal melden - les es dir aber bitte vorher durch ;-)

    bis bald

    Daniel
    1 Kommentare
    • Re^2: mysql group
      Danke für die schnelle Antwort.

      Hier habe ich sehr schnell einige Anregungen bekommen.

      join hatte ich bisher schon öfter angeschaut. Allerdings nie wirklich verstanden. In zahlreichen Seiten wird wortgleich beschrieben, was join macht aber nicht wie.

      Was der Unterschied sein soll zwischen :
      select * from steroanlagen where id=1 and verstaerker.id=stereoanlagen.verstaerker_id and verstaerker.hersteller_id=firmen.id
      und der Umsetzung mit einem join, war mir bisher schleierhaft. Daher hier auch die Verständnis-Probleme mit zwei Tabellen. Bisher kannte ich das "as" auch schon, aber nur um zB sum(preise) as gesamtumsatz zu nutzen, aber an ein alias eine Bedingung zu knüpfen hatte ich nie gemacht. Bisher habe ich wirklich immer mehrere Abfragen gemacht.

      Eine der genannten zahlreichen Kombinationen wird mir hoffentlich auf die Sprünge helfen. Danke!
  9. Antwort von Αјо 0
    Re: mysql group
    Hallo,

    bei solchen Abfragen bietet sich immer das "JOIN" an, da es leider immer wieder mal sein kann, dass z.B. nicht alle Hersteller in der Hersteller-Tabelle vorhanden sind. Mit einer WHERE-Verknüpung würde dann die gesamte Stereoanlage rausfallen -- hingegen mit JOIN hast du schlimmstenfalls ein leeres Herstellerfeld (NULL genannt).

    Ich habe hier ein gutes Beispiel gefunden, was deinem Problem ähnlich ist. Leider ein fremdes Forum, aber das Internet lebt von Verlinkung. Also hier:

    http://www.tutorials.de/forum/relationale-datenbanks...

    LG

    Ajo
    2 Kommentare
    • Re^2: mysql group
      Hi Ajo,

      danke für Deine Ausführungen! Das ein Hersteller nicht drinnesteht? Hm, könnte im Fehlerfalle sein. Ansonsteb vermeide ich sowas immer duch select-Felder im Eingabe-Formluar oder ggfs. durch ein Autocomplete, welches aber keine eigenen Eingaben zulässt, sondern nur die Datenbankeingaben. Das einige wäre, wenn zB irgendjemand den hersteller löscht, der der zB wie Akai seinerzeit pleite geht.
    • Re^2: mysql group
      Hi Ajo,

      danke für Deine Ausführungen! Das ein Hersteller nicht drinnesteht? Hm, könnte im Fehlerfalle sein. Ansonsteb vermeide ich sowas immer duch select-Felder im Eingabe-Formluar oder ggfs. durch ein Autocomplete, welches aber keine eigenen Eingaben zulässt, sondern nur die Datenbankeingaben. Das einige wäre, wenn zB irgendjemand den hersteller löscht, der der zB wie Akai seinerzeit pleite geht..
  10. Re: mysql group
    Hallo, Oliver,

    fuer deine Anfrage musst du die Hersteller-Tabelle mit jeder der Komponenten-Tabellen erneut verknuepfen - du kannst den Feldern in der Abfrage dann neue Namen geben, um die Felder auseinander halten zu koennen.

    Die Abfrage ist ziemlich lang formuliert, wird aber nicht allzulange laufen:

    [code]
    SELECT s.*, dvdplayer.*, verstaerker.*, boxen.*, h1.firmenname AS boxen_firmenname, h2.firmenname AS verstaerker_firmenname, h3.firmenname AS dvdplayer_firmenname
    FROM stereoanlage AS s
    LEFT JOIN boxen ON s.boxen_id = boxen.boxen_id
    LEFT JOIN hersteller AS h1 ON h1.hersteller_id = boxen.hersteller_id
    LEFT JOIN verstaerker ON s.verstaerker_id = verstaerker.verstaerker_id
    LEFT JOIN hersteller AS h2 ON h2.hersteller_id = verstaerker.hersteller_id
    LEFT JOIN dvdplayer ON s.dvdplayer_id = dvdplayer.dvdplayer_id
    LEFT JOIN hersteller AS h3 ON h3.hersteller_id = dvdplayer.hersteller_id

    WHERE s.anlagen_id = ?
    [/code]

    Du solltest aber beim Select keine wildcards(*) verwenden sondern explizit nur die Felder abfragen die du auch auswerten willst.

    Eine Option zur Verringerung der Komplexitaet der Abfrage waere es, die Komponenten-Tabellen in einer Sicht(View) vorab mit ihrem Hersteller zu verknuepfen und dann nur noch die Views mit der Stereoanlage zu verknuepfen.

    [http://dev.mysql.com/doc/refman/5.0/en/create-view.h...

    Mit freundlichem Gruss,
    Kai
    4 Kommentare
    • Re^2: mysql group
      Danke für die schnellen Antworten! Probiere es. Nun mit frischen und freiem Kopf. Gestern Abend ging nichts mehr.
    • Re^2: mysql group
      Hi kai,

      danke das war die Lösung! Zum Verständnis für mich:
      Im ersten part habe ich wie geabt die Felder angegeben, welche ich haben möchte.
      Dann im from-Teil:
      verknüpfe ich auch wie gehabt die hersteller_id aus der Komponenten Tabelle mit der id aus der Herstellertabelle, auch klar.

      Der Knackpunkt ist jeweils die Zeile

      [code]

      LEFT JOIN hersteller AS h1 ON h1.hersteller_id = boxen.hersteller_id

      [/code]

      Dort spanne ich so zusagen drei "künstliche" Spalten auf.
      Also hinterlege ich unter h1 (erste künstliche Spalte) die Bedingungung/Beziehung zwischen DVD.hersteller_id und hersteller.id und unter h2 (zweite künstliche Spalte) die Bedingungung/Beziehung zwischen verstaerker.hersteller_id und hersteller.id und unter h3 (dritte künstliche Spalte) die Bedingungung/Beziehung zwischen boxen.hersteller_id und hersteller.id

      Habe ich es verstanden oder ist da noch ein Denkfehler drin? Ein fettes Dankeschön für Deine Mühe!
    • Re^3: mysql group
      Hallo nochmal,

      h1 - h3 sind keine Spalten, sondern Aliase, die dazu dienen die drei Tabellen, die ja alle "Hersteller" heißen, zu unterscheiden, wenn du ihre Spalten verwendest. Ohne diese würde der Server bei jeder Verwendung einer Spalte von "Hersteller" sagen "Die Spalte ist mehrfach vorhanden, ich weiß nicht was du von mir willst" ;) Also nennst du die erste Hersteller-Tabelle h1, die zweite h2 und die dritte h3 (Du kannst sie auch Hans, Gustav und Klaus nennen, ganz frei nach Belieben) und beim Auswählen einer Spalte sagst du dann halt h1.Name statt Hersteller.Name und damit ist es für den Server klar welche Herstellertabelle du willst.

      Alle Klarheiten beseitigt? ;)

      Ciao!
      Kai
    • Re^4: mysql group
      Hai Kai,
      jep, ich glaube ich habe es gecheckt.

      Tatsächlich hatte ich schon mehrfach über join gelesen. Aber in 90% der Seiten steht exakt der selbe Text drin.

      Wie schön join ist und wie toll und was man damit alles machen kann und warum, aber nicht wie.

      Genau sowas wie hier habe ich gebraucht. Eine kleine Aufgabe, eine Lösung und eine Erläuterung. Damit kann ich dann experimentieren! Learning bei doing. Danke schön!
      Aber ich denke, dass ich richtig liege, dass es schon etwas fortgeschrittener ist, was ich machen wollte.
      ;)
      Aber Wahnsinn, der hatte der Serve doch mal eben etwas mehr als einige Milli-Sekunden zu rechnen.
  11. Antwort von Wеrnеr Еѕdоһr 0
    Re: mysql group
    Hallo Oliver Eikel,

    es gibt natürlich auch in mySQL solche Abfragen wie group innerjoin und outerjoin. Ich selber habe bisher damit kaum gearbeitet. Deine Tabellen haben eine gemeinsame Beziehung: Hersteller. Es könnte sich daher eine Sortierung nach Herstellern anbieten:
    Fa. XYZ bietet an DVD-Player, Verstärker usw.

    Ich selber würde eher dazu neigen die Tabellen einzeln zu bearbeiten, und jeweils dazu die Hersteller zu suchen. Scheint mir im ersten Moment einfacher zu sein.
    Eine bessere Lösung kann ich Dir so schnell nicht anbieten.

    Viele Grüße
    Werner