Kurt: Tabellen nach Ergebnis and. Tab. in einem Zug durchsuchen?

Guten Tag,

es gibt folgende 3 Tabellen:

Tabelle 1: produktkategorie:
-----------------------------------------------------------
id | de_kat

Tabelle 2: de_produktinfo
-----------------------------------------------------------
produkt_index | d_produktname | d_produktbeschreibung | d_produktvorteile | d_produkttyp | d_keywords

Tabelle 3:
-----------------------------------------------------------
d_produktname | d_produktnamehtml | d_kategorie |d_seit | d_gallerie   | d_gallerietxt

Wenn nun der Benutzer auf ein Link im Menü klickt wird eine (Kategorie)ID (der Tabelle 1) an eine Funktion übergeben.
Nun sollen in einem Zug die Daten : de_kat, d_produktbeschreibung, d_produktnamehtml aud der DB geholt werden.

* de_kat(Tab1) kann man anhand der ID bekomemn
* d_produktname, d_produktnamehtml (Tab2) kann man ebenfalls durch die ID bekommen
* Problem jetzt: kann nur an d_produktbeschreibung über d_produktname kommen

Geht das mit einer Abfrage?
Bis her hatte ich ein zeidimensionales Array mit for und while Schleife. Echt kompliziert,so dass ich selber nicht mehr durchgeblickt habe. Es muss doch auch einfacher gehen.

Also es wird ein Array von Arrays benötigt, dass ich dann einfach an eine Template übergeben kann.

1000x Dank

  1. Hallo,

    Nun sollen in einem Zug die Daten : de_kat, d_produktbeschreibung, d_produktnamehtml aud der DB geholt werden.

    [...]

    Geht das mit einer Abfrage?

    Das hängt von der verwendeten Datenbank ab. Wenn sie SQL unterstützt, und dazu noch Abfragen über mehrere Tabellen (Stichwort JOIN) formuliert werden können, so sollte Dein Problem relativ einfach gelöst werden können.
    Wie das genau geht hängt sehr stark von der verwendeten Datenbank ab, daher verzichte ich an dieser Stelle, einen Lösungsansatz zu präsentieren, da er potentiell zu 100% daneben liegen wird.

    Grüße
      Klaus

    1. Guten Tag,

      ich hatte vergessen zu erwähnen, dass es ich um eine mySQL DB handelt.
      Entschuldigung.

      Danke

      1. Hallo,

        ich hatte vergessen zu erwähnen, dass es ich um eine mySQL DB handelt.

        dann dürfte http://www.mysql.com/doc/de/JOIN.html von interessant für Dich sein.

        Grüße
          Klaus

  2. Hi,

    Also es wird ein Array von Arrays benötigt, dass ich dann einfach an eine Template übergeben kann.

    SQL ist datensatzmengenorientiert. Du benoetigst eine "hoeherwertige" Datenstruktur, die ich mal Dokument nennen moechte.

    Pruefe ggf. bitte ob Dein RDBMS auch XML-Output generieren kann.

    Gruss,
    Lude

    1. Hi,

      ich benutze php4.

      Was soll ich mit xml ?

      Danke

      1. Hi,

        Also es wird ein Array von Arrays benötigt, dass ich dann einfach an eine Template übergeben kann.

        SQL ist datensatzmengenorientiert. Du benoetigst eine "hoeherwertige" Datenstruktur, die ich mal Dokument nennen moechte.

        Pruefe ggf. bitte ob Dein RDBMS auch XML-Output generieren kann.

        Was soll ich mit xml ?

        wenn Du mehrere Datensatzmengen "holen" moechtest, benoetigst Du "nur mit SQL" mehrere Abfragen, die wiederum mehrere Datensatzmengen zurueckgeben.

        Darfst Du nur eine Rueckgabemenge erhalten, so geht das z.B. beim 'MS SQL Server 2000' mit einer Stored Procedure, die mehrere Abfragen ausfuehrt, dann aber nur ein XML-Dokument zurueckgibt. Das XML-Dokument koenntest Du dann wiederum XSLTransformieren und haettest dann z.B. validen HTML-Code.

        Gruss,
        Lude

  3. Hallo,

    Geht das mit einer Abfrage?

    Vermutlich geht das schon mit einer einzigen Anfrage.
    Du hast aber noch nicht gesagt, wie die verschiedenen Tabellen
    und Felder zusammenhaengen, d.h. welche Felder einander entsprechen
    oder Fremdschluessel sind.

    Eine SQL-Anfrage kann auch mehrere Tabellen betreffen,
    Stichwort JOIN.
    http://www.mysql.com/doc/en/JOIN.html
    http://www.mysql.com/doc/de/JOIN.html

    Eine Moeglichkeit:

    SELECT tabelle1.feldx, tabelle2.feldy, tabelle3.feldz
      FROM tabelle1, tabelle2, tabelle3
      WHERE tabelle1.felda=tabelle2.feldb
            AND tabelle2.feldc=tabelle3.feldd

    Bis her hatte ich ein zeidimensionales Array mit for und while Schleife. Echt kompliziert,so dass ich selber nicht mehr durchgeblickt habe. Es muss doch auch einfacher gehen.

    Was immer mit (My)SQL moeglich ist, sollte man damit machen.
    Schleifen und Arrays in PHP sind langsamer, komplizierter und
    zu vermeiden.

    Gruesse,

    Thomas