Tabellen nach Ergebnis and. Tab. in einem Zug durchsuchen?
Kurt
- datenbank
0 Klaus Mock0 Kurt
0 Lude0 Thomas Luethi
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
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
Guten Tag,
ich hatte vergessen zu erwähnen, dass es ich um eine mySQL DB handelt.
Entschuldigung.
Danke
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
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
Hi,
ich benutze php4.
Was soll ich mit xml ?
Danke
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
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