Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 15 von 20
  1. #1
    Avatar von planet4
    planet4 ist offline Kaiser
    registriert
    06-06-2002
    Ort
    Regensburg
    Beiträge
    1.417

    [MySQL] 2 Tabellen abfragen

    Guten Abend,

    ich habe 2 Tabellen, die 1. heißt "aktuell" und ich will aus ihr die id, datum, text, kategorie auslesen,
    die 2. heitß "aktuell_kat" und enthält nur die Kategorien (die auch in der ersten Tabelle stehen) mit zugehöriger kat_id, hier möchte ich also die zu meinem Datensatz zugehörige kat_id auslesen... wie mach ich das am besten?

    ich muss also diese beiden Abfragen miteinander kombinieren:

    $result=mysql_query("SELECT id,datum,text,kategorie FROM aktuell ORDER BY datum ASC");

    $result=mysql_query("SELECT kat_id,kategorie FROM aktuell_kat WHERE kategorie=...");


    (JOIN? ) (aber wie geht das genau und welches JOIN?)

    Danke für Tipps!
    planet4.

  2. #2
    .dominik. ist offline Routinier
    registriert
    13-05-2006
    Ort
    Bechhofen 24
    Beiträge
    306

    AW: [MySQL] 2 Tabellen abfragen

    hm jo wobei es doch aus so gehen würde......


    $query1 = "SELECT id,datum,text,kategorie FROM aktuell ORDER BY datum ASC";
    $result1 = mysql_query($query1) or die(mysql_error());
    while($row = mysql_fetch_array($result1)){
    $kategorie = $row['kategorie'];


    $query1 = ""SELECT kat_id,kategorie FROM aktuell_kat WHERE kategorie=''$kategorie";
    $result1 = mysql_query($query1) or die(mysql_error());
    while($row = mysql_fetch_array($result1)){


    }

    }





    aber wahrscheinlich hab ich eh wieder nicht recht

  3. #3
    Avatar von jeko
    jeko ist offline Foren-Gott
    registriert
    03-06-2004
    Ort
    [CH]Vor meinem PC[/CH]
    Beiträge
    3.069

    AW: [MySQL] 2 Tabellen abfragen

    Hermine: Er will sie aber verbinden.

    Probier mal:
    Code:
    SELECT aktuell.id,aktuell.datum,aktuell.text,aktuell.kategorie,aktuell_kat.kat_id FROM aktuell, aktuell_kat
    WHERE aktuell.kategorie=aktuell_kat.kategorie ORDER BY datum ASC
    Arbeit an der Sprache ist Arbeit am Gedanken.
    NoPaste / Format / Analyze / Crypt
    Ich bin ein Schwätzer.

  4. #4
    .dominik. ist offline Routinier
    registriert
    13-05-2006
    Ort
    Bechhofen 24
    Beiträge
    306

    AW: [MySQL] 2 Tabellen abfragen

    das kommt aber doch aufs selbe draufraus?
    in der 2teien while bekommt er dann nur die sachen von dem ersten


    ------------------------------------------
    naja dann wird jekos antwort schon richtig sein

  5. #5
    Avatar von rasputin
    rasputin ist offline Lounge-Member
    registriert
    31-10-2001
    Beiträge
    3.102

    AW: [MySQL] 2 Tabellen abfragen

    Zitat Zitat von planet4 Beitrag anzeigen
    ich habe 2 Tabellen, die 1. heißt "aktuell" und ich will aus ihr die id, datum, text, kategorie auslesen,
    die 2. heitß "aktuell_kat" und enthält nur die Kategorien (die auch in der ersten Tabelle stehen) mit zugehöriger kat_id, hier möchte ich also die zu meinem Datensatz zugehörige kat_id auslesen...
    sind die beiden tabellen über die kategorie-id verknüpft, dein text liest sich jedenfalls nicht so.

    ein inner join dürfte hier geeignet sein. die allgemeine syntax lautet folgendermassen:

    SELECT t1.xxx, t1.yyy, t2.yyy FROM tabelle_eins t1 INNER JOIN tabelle_zwei t2 ON (t1.tab_id = t2.id) WHERE t1.tab_id = 13 ORDER BY t1.aaa ASC

  6. #6
    .dominik. ist offline Routinier
    registriert
    13-05-2006
    Ort
    Bechhofen 24
    Beiträge
    306

    AW: [MySQL] 2 Tabellen abfragen

    könnt ihr mir mal bitte sagen warum
    PHP-Code:
    $query1 "SELECT id,datum,text,kategorie FROM aktuell ORDER BY datum ASC";
    $result1 mysql_query($query1) or die(mysql_error());
    while(
    $row mysql_fetch_array($result1)){
    $kategorie $row['kategorie'];


    $query1 ""SELECT kat_id,kategorie FROM aktuell_kat WHERE kategorie=''$kategorie";
    $result1 = mysql_query($query1) or die(mysql_error());
    while(
    $row = mysql_fetch_array($result1)){

    $kat_id$row['kat_id'];
    }


    nicht richtig ist ? damit kann er sich doch verbinden wie er will

  7. #7
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: [MySQL] 2 Tabellen abfragen

    Das mag richtig sein, aber wenn du sowas machst brauchst du auch keine Datenbank, die sind für genau sowas gemacht. Bei selfhtml gibt's 2 Artikel zu Joins SELFHTML Artikel / Datenbanken, das ist kein einfaches Thema aber es lohnt sich.

  8. #8
    Avatar von planet4
    planet4 ist offline Kaiser
    registriert
    06-06-2002
    Ort
    Regensburg
    Beiträge
    1.417

    AW: [MySQL] 2 Tabellen abfragen

    Hallo und danke für eure Antworten!

    @Hermine: so wollte ich es eben nicht machen, das wäre sehr umständlich...

    @Rasputin: die beiden Tabellen sind über "kategorie" verknüpft, das ist das Feld, das ich vergleichen muss

    nach euren Vorschlägen und ein bisschen Rumsuchen und Nachdenken bin ich jetzt zu diesem Ergebnis gekommen:

    PHP-Code:
    $result=mysql_query("SELECT id,datum,text,kategorie FROM aktuell INNER JOIN aktuell_kat ON aktuell.kategorie = aktuell_kat.kategorie"); 
    [edit]sorry, hier hatte ich noch ein Problem stehen mit der Ausgabe, klappt aber jetzt, war nur ein kleiner Fehler in einem Feldnamen[/edit]

    Vielen Dank für eure Hilfe!


    planet4.
    Geändert von planet4 (28-02-2007 um 22:33 Uhr)

  9. #9
    Avatar von Albu
    Albu ist offline Foren-Gott
    registriert
    04-07-2001
    Beiträge
    13.501

    AW: [MySQL] 2 Tabellen abfragen

    Führe Dein Statment doch mal in phpMyAdmin aus, dann wirst Du vermutlich zu hören bekommen, dass er nicht weiß, welches kategorie Du denn meinst, schließlich gibt es in beiden Tabellen eine Spalte gleichen Namens (ambigious column name oder so was könnte der sagen).

    Außerdem ist es sinnvoller die Tabellen über die ID zu verknüpfen, dies spart Speicherplatz und macht die Abfragen schneller. Beim Anzeigen musst Du dann allerdings ein JOIN machen, da Du schlecht eine Kat_ID statt der eigentlichen Kategorie anzeigen kannst.

    @Hermine: ich weiß nicht ob du schon mal davon gehört hast, dass man Resourcenverschwendung vermeidet sollte und Deine Lösung kommt mit n+1 Datenbank Abfragen und damit einer Menge IO Operationen daher. Jetzt überleg mal selbst ob es besser ist eine oder n plus eine Operation auf der Datenbank mit damit verbundenen Transfers durchzuführen.
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  10. #10
    Avatar von planet4
    planet4 ist offline Kaiser
    registriert
    06-06-2002
    Ort
    Regensburg
    Beiträge
    1.417

    AW: [MySQL] 2 Tabellen abfragen

    Guten Morgen,
    Zitat Zitat von Albu Beitrag anzeigen
    schließlich gibt es in beiden Tabellen eine Spalte gleichen Namens
    ja, das war der kleine Fehler bei der Abfrage: die Spalte heißt in der einen Tab. "kategorie" und in der anderen "kat_name", ich versuche eigentlich immer, gleiche Bezeichnungen zu vermeiden. Jetzt klappt's ja.

    Zitat Zitat von Albu Beitrag anzeigen
    Außerdem ist es sinnvoller die Tabellen über die ID zu verknüpfen, dies spart Speicherplatz und macht die Abfragen schneller.
    wenn sie über die id verknüpft wären, müsste ich tatsächlich immer auch die Tabelle, die nur die Kategorie-Namen enthält extra mit abfragen, wenn ich Namen der Kategorien ausgeben will... deshalb hab ich es so gemacht

    Danke und bis zum nächsten Problem
    planet4.

  11. #11
    ein schlauer ist offline Lounge-Member
    registriert
    18-08-2004
    Beiträge
    14.671

    AW: [MySQL] 2 Tabellen abfragen

    Zitat Zitat von planet4 Beitrag anzeigen
    die Spalte heißt in der einen Tab. "kategorie" und in der anderen "kat_name", ich versuche eigentlich immer, gleiche Bezeichnungen zu vermeiden.
    Das ist Quatsch, wenn du verknüpfte Felder hast, spricht nichts dagegen sie gleich zu bennen, im gegenteil es vereinfacht sogar die Abfrage da du mit USING() die Tabellen verbinden kannst statt ON.

    Und die zweite Aussage verstehe ich nicht ganz, aber du kannst bei einer JOIN Abfrage immer die Felder aus allen beteiligten Tabellen benutzen.

    Wie gesagt, die Artikel bei selfhtml sind hilfreich.

  12. #12
    Avatar von Albu
    Albu ist offline Foren-Gott
    registriert
    04-07-2001
    Beiträge
    13.501

    AW: [MySQL] 2 Tabellen abfragen

    Also eine Fremdschlüsselbeziehung über eine ID (= Integer) dürfte performanter sein, als eine über eine Zeichenkette. Schließlich fallen eine Menge Stringvergleiche weg.
    Doppelte Namen in unterschiedlichen Tabellen sind auch kein Problem, wenn man deren Herkunft in Abfragen explizit angibt.

    Und richtig Du müsstest bei der Anzeige ein JOIN machen, um die korrekte Kategorie anzuzeigen, das mag auf den ersten Blick umständlich wirken, von der Performance her wirst Du da aber keinen wirklichen Unterschied merken (es sei denn vielleicht, dass die Datenbank ehh schon am Limit kratzt). Aber deswegen alles in eine Tabelle zu packen, weils so schön einfach ist, ist eben keine gute Idee.

    Und wenn Deine Kategorie Tabelle lediglich ID und Kategorie enthält und die Kategorien auch noch mal in den einzelnen Datensätzen auftauchen, dann ist die Tabelle Kategorie völlig überflüssig und kann weg.
    1. Get people to play Space Taxi
    2. Sell real estates on neptun
    3. Profit!

    IE is not a browser, it is a scream.


    Outside of a dog, a book is man's best friend. Inside of a dog, it's too dark to read.

  13. #13
    Avatar von skooli
    skooli ist offline König
    registriert
    08-01-2006
    Beiträge
    958

    AW: [MySQL] 2 Tabellen abfragen

    joins sind durchaus performant, ich hab queries die teilweise 6 oder mehr tabellen joinen und trotzdem unter 1ms liegen - also wäre es besser den kram ordentlich zu trennen, siehe auch Datenbanken entwickeln

  14. #14
    Avatar von planet4
    planet4 ist offline Kaiser
    registriert
    06-06-2002
    Ort
    Regensburg
    Beiträge
    1.417

    AW: [MySQL] 2 Tabellen abfragen

    Zitat Zitat von Albu Beitrag anzeigen
    Und wenn Deine Kategorie Tabelle lediglich ID und Kategorie enthält und die Kategorien auch noch mal in den einzelnen Datensätzen auftauchen, dann ist die Tabelle Kategorie völlig überflüssig und kann weg.
    nein, das stimmt nicht. An anderer Stelle werden nur die Kategorien ausgelesen, z.B. in einer select-Auswahlliste, da sind dann auch welche dabei, die vielleicht noch nicht verwendet wurden, dafür brauche ich also diese extra-Tabelle unbedingt.

    planet4.

  15. #15
    Avatar von ZeitGeist
    ZeitGeist ist offline Lounge-Member
    registriert
    26-04-2003
    Ort
    Outa Space
    Beiträge
    4.125

    AW: [MySQL] 2 Tabellen abfragen

    Dadurch dass du deine Kategorienamen jedesmal mitspeicherst erhöhst du deine Redundanz. Das führt erstmal zu überflüssigem Speicherverbrauch, als auch zu zusätzlicher Arbeit bei Änderungen. Wenn du eine deiner Kategorien umbennen willst, musst du sämtliche Datensätze ändern, weil ja überall auch der alte Name drin steht.

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. [MySQL] enum-Möglichkeiten abfragen
    Von skooli im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 22-08-2006, 17:29
  2. [MySQL] Verknüpfung von Tabellen
    Von D_gamer im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 14-10-2005, 08:48
  3. mysql 2 Tabellen abfragen
    Von planet4 im Forum Serverseitige Programmierung
    Antworten: 6
    Letzter Beitrag: 31-10-2004, 16:27
  4. [MySQL] Bestenliste ausgeben über 5 Tabellen
    Von Fallen][Angel im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 03-09-2004, 17:31
  5. [MySQL] Tabellen in Datenbanken verschieben
    Von RoyalKnight im Forum Serverseitige Programmierung
    Antworten: 2
    Letzter Beitrag: 12-06-2004, 17:43

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •