Hi!
Mag sein, aber Du solltest ja gemerkt haben dass es mit * eben nicht geht. IMHO hast Du 3 Möglichkeiten:
- Du stellst tabellenweit eindeutige Spaltennamen sicher
- Du benutzt keine Joins sondern fragst nur Tabellen ab und setzt die Arrays dann in PHP zusammen
- Du fragst die Strukturen der Tabellen ab über die Du joinen willst, und erzeugst daraus ein entsprechendes SELECT-Statement mit passenden mit "Aliasen" für _alle_ Spalten, am besten setzt Du dann für jede Tabelle einen spezielle Prefix davor.
1. Ist leider nicht möglich, das hab ich dummerweise nicht zu entscheiden.
2. Hab ich gemacht, aber das ist wie ich ja schon gesagt habe, bei einem Datensatz angenehm, aber bei 200 Datensätze mal min. 7 Queries nicht mehr so performant.
3. Das werde ich wohl, leider, machen müssen, wenn die Selektion schnell geschehen soll.
Der Einwurf bzgl. phpMyAdmin ist IMHO gerechtfertigt, wenn Du was Vergelichbares machen willst, denn im Prinzip ist das ja dasselbe wie "manuell SELECT *", da es nur zu Verwaltungszwecken dient.
Jede der genannten Möglichkeiten hat eigene Vor- und Nachteile. Musst halt sehen was Deinen Anforderungen am besten gerecht wird.
Du hast leider ein seltenes Problem, für sowas sind Datenbanken nicht gedacht. Es geht schlichtweg nicht so einfach wie Du es gerne hättest, das liegt wie gesagt an Deinem Vorhaben.
Tja das es ein seltenes Problem ist, weiß ich. Wobei ich sagen muss, das ich beispielsweise mit ADO nicht das Problem hätte, aber da sind wir ja nun mal nicht und es geht um PHP.
Wobei ich es nicht so ganz verstehe, denn wenn Du Joins verwendest, brauchst Du zwangsläufig Wissen über die Datrenstruktur, das geht nicht 100%ig dynamisch, da Du ja wissen musst worüber Du die(welche) Tabellen verknüpfen kannst.
Ja, tu ich auch. Wie ich schon sagte, sind gewisse Schnittstellen festgelegt, so beispielsweise eine eindeutige ID und ein anders Status-Feld. Andere Spalten können hier vollkommen unterschiedlich sein.
Der Rest wird allerdings nur in einer Konfigurationsdatei festgelegt. Beispielsweise, dass es eine Tabelle xy gibt, die der Definition entspricht und bei der Verarbeitung etc. berücksichtig werden muss. Für einen Datensatz kann ich wunderbar meine geschrieben Klassen benutzen, dafür nehme ich nämlich deinen Punkt 2.
Aber für mehr Geschwindigkeit, muss ich eine große Abfrage machen und nicht 2000 kleine.
PS: Wenn Du MS SQL verwendest, hierfür gibt es auch eine spezialisiertes Modul.
Ja das hatte ich probiert, aber hat irgendwie nicht ganz funktioniert, aber ich weiß nicht warum, aber der ODBC-Treiber tut seinen Dienst eigentlich auch gut.
Bis dann
Daniel