Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
MERGE-Tabelle geeignetes Mittel? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MERGE-Tabelle geeignetes Mittel?


 
jayred
17-03-2007, 10:49 
 
hallo zusammen!
ich oute mich mal als totalen newby in sachen php und mysql, und deshalb frage ich hier vielleicht auch ein wenig doof - ich bitte mir das vorab bereits nachzusehen. ich stehe vor folgendem problem:

ich erstelle derzeit einen shop. in dem auch fsk18-produkte verkauft werden sollen. auf das warum und wieso möchte ich nicht näher eingehen, fakt ist jedoch, dass die fsk18-produkte datebankseitig zwar in der gleichen mysql-datenbank abgelegt sind, aber in anderen tabellen als die "normalen artikel". die struktur dieser tabellen ist hingegen identisch.
meine frage ist nun diese: wenn ich es ermöglichen will, dass im "fsk18"-bereich alle artikel abgefragt werden können (also normale und fsk18), kann ich das über eine merge-tabelle erreichen, oder liege ich da falsch? ich müsste der php-anwendung lediglich sagen, dass sie aus der merge-tabelle "alle_produkte" die daten ziehen soll, statt aus den tabellen "normale_produkte" oder "fsk18_produkte". korrigiert mich bitte, wenn ich mit dieser annahme falsch liege...
läuft merge eigentlich unter mysql 4.0? laut diversen angaben gibts die funktion ja bereits seit mysql 3.23...
im voraus besten dank für eure einschätzung!

 
Shurakai
17-03-2007, 10:56 
 
Kannst du das nicht mit nem UNION SELECT lösen?

 
asp2php
17-03-2007, 10:57 
 
UNION ist dein Freund http://dev.mysql.com/doc/refman/4.1/en/union.html

 
jayred
17-03-2007, 10:57 
 
naja, wenn ich wüsste, wie ich das machen muss? liefe das dann über die datenbank oder php-seitig?

EDIT: okay, hab den befehl mal nachgeschaut, ist wohl php-seitig. das wäre allerdings relativ umständlich, da die diversen tabellen (es geht nicht nur um eine) etliches an daten über die produkte bereithalten. es wäre eben einfacher, über die funktion "define ('PRODUKTE','alle_produkte') das zu erreichen... nur dazu muss ich "alle_produkte" eben irgendwie erzeugen.

 
asp2php
17-03-2007, 11:00 
 
lese doch im Link

 
jayred
17-03-2007, 11:04 
 
okay, wie gesagt - newbie. ich muss bei der sache jedoch auch berücksichtigen, dass sich die produkte ändern können. ich müsste also jedesmal wenn ein neues produkt eingepflegt wurde oder ein altes rausfliegt die entsprechende abfrage neu laufen lassen, wenn ich das richtig sehe?

 
asp2php
17-03-2007, 11:05 
 
ja

 
jayred
17-03-2007, 11:06 
 
dann passt union eben doch nicht...

 
asp2php
17-03-2007, 11:36 
 
innerhalb von 10 Minuten hast du schon entschieden/festgestellt, dass es nicht passt :rolleyes: na dann viel Spass mit deinem Problem, was überhaupt nicht ist :o

 
jayred
17-03-2007, 11:42 
 
wenn ich bei jeder änderung in einer der tabellen die abfrage wiederholen muss, dann ist es eben eine eher schlechte lösung für mein problem, oder gibt´s möglichkeiten, so etwas zu automatisieren?
wenn das alles so einfach ist, warum beschreibst du mir nicht einfach mal die beste vorgehensweise? wäre wirklich nett :)

 
ministry
17-03-2007, 11:44 
 
Original geschrieben von jayred
okay, wie gesagt - newbie. ich muss bei der sache jedoch auch berücksichtigen, dass sich die produkte ändern können. ich müsste also jedesmal wenn ein neues produkt eingepflegt wurde oder ein altes rausfliegt die entsprechende abfrage neu laufen lassen, wenn ich das richtig sehe?

Nicht nur das, du musst die ganze Abfrage logischerweise jedesmal machen, wenn du die Produkte anzeigen willst.

Aber wie sollte das auch anders gehen? Dafür sind Abfragen schließlich da?

 
jayred
17-03-2007, 11:46 
 
darum dachte ich ja eben auch an eine merge-tabelle (siehe eingangsposting) - was spricht denn gegen diese lösung?

 
asp2php
17-03-2007, 11:53 
 
Original geschrieben von jayred
wenn ich bei jeder änderung in einer der tabellen die abfrage wiederholen muss, dann ist es eben eine eher schlechte lösung für mein problem, oder gibt´s möglichkeiten, so etwas zu automatisieren?
wenn das alles so einfach ist, warum beschreibst du mir nicht einfach mal die beste vorgehensweise? wäre wirklich nett :)
andere Frage: wieviele Datensätze willst du jedes Mal anzeigen? Wenn < 50 ist dann ist es kein Problem bei Aktualisierung erneut abzufragen, wenn mehr, dann stellt sich aber die Frage, welcher Mensch will diese Menge von Daten auf einmal bearbeiten :rolleyes:

 
ministry
17-03-2007, 11:56 
 
Alles. Das macht man einfach nicht so, weil es viel zu umständlich ist.

Du musst doch momentan schon eine Stelle haben, an der die normale_produkte - Tabelle abgefragt und ausgegeben wird? Diese Stelle musst du so ändern, dass eben zwei Tabellen gleichzeitig abgefragt und ausgegeben werden. Das ist alles.

 
jayred
17-03-2007, 12:01 
 
die anzahl der anzuzeigenden datensätze hängt jeweils davon ab, welche produktkategorie vom user ausgewählt wurde.
vielleicht muss ich das alles auch noch mal anders erläutern: ich will eine tabelle vorhalten, in der alle produkte aufgelistet sind und die sich selbsttätig aktualisiert. ich muss das aus dem einfachen grund so lösen, weil die eingesetzte shopsoftware sonst tierisch umständlich anzupassen wäre. natürlich wäre es eleganter, das als abfrage einfach in den shop einzubauen und gut ist. da aber an solch einer änderung noch ein rattenschwanz von unwägbarkeiten in dieser software mit dranhängt, erscheint mir das als nicht praktikabel.

 
jayred
17-03-2007, 12:04 
 
Original geschrieben von ministry
Alles. Das macht man einfach nicht so, weil es viel zu umständlich ist.

Du musst doch momentan schon eine Stelle haben, an der die normale_produkte - Tabelle abgefragt und ausgegeben wird? Diese Stelle musst du so ändern, dass eben zwei Tabellen gleichzeitig abgefragt und ausgegeben werden. Das ist alles.

das findet - soweit ich das verstehe - auf der databasetables.php statt, wo eben besagte define-zeile drin steht: define (PRODUKTE, produkte) - ohne jetzt mal mit der syntax rumzuhampeln. genau an dem punkt wollte ich ansetzen, d.h. die tabelle produkte in der definition in eine tabelle "alle_produkte" umbiegen. eine verknüpfung zweier tabellen in dieser define-zeile geht ja nicht, genausowenig wie der verweis auf einen array in einer define-funktion, soweit ich das richtig mitbekommen habe... muss aber nicht richtig sein, was ich da von mir gebe?

edit: vielleicht noch zur verdeutlichung: es handelt sich hierbei nicht nur um eine einzelne tabelle, die strukturell gesehen doppelt vorliegt, sondern um ca. 15 stück. ich hab grade mal nachgezählt, alleine für die erste der 15 tabellen müsste ich ca. 250 abfragestellen anpassen. das wären hochgerechnet knapp 3750 anpassungen - vielleicht ist jetzt eher nachvollziehbar, dass ich mir diese arbeit sparen will...

 
ministry
17-03-2007, 13:58 
 
ich hatte nicht verstanden, dass es ein nicht von dir erstellter Shop ist.

Hab mir jetzt das mit Merge kurz durchgelesen, und es hört sich ja so an, als würde es dein Problem lösen. Ich hab das noch nie benutzt, kann dir also nichts weiter dazu sagen.

Warum probierst du es nicht aus? Es ist nicht gesagt, dass alles wie mit einer normalen Tabelle funktioniert, wie im Kapitel Merge-Tabellenprobleme steht, aber wäre doch einen Versuch wert.

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:53 Uhr.