CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
15.01.2004, 12:31:40
|
Anfänger
|
|
Registriert seit: Dec 2003
Beiträge: 23
|
|
Wie viele Tabellen kann man miteinander verknüpfen
Hi,
ich müsste 8 Tabellen miteinander verknüpfen. In Access funktioniert es. Allerdings, wenn ich die Abfrage 1zu1 in MySQL übernehme, gibt er mir nur aus "SQL-Befehl wurde erfolgreich ausgeführt...". Anzeigen tut er mir aber kein Recordset.
Hier ich poste einfach mal, den SQL-Befehl:
SELECT f.bez AS fbez, d.bez AS dbez, sfest, mfest, afd.id AS afd_id
FROM art, form AS f, dekor AS d, art_form_dekor AS afd, dekorkriterium AS dk, dekor_artikel AS da, artikel AS a, artikelbezeichnung AS ab
WHERE art.id = afd.artnr and afd.fnr = f.id and afd.dnr = d.id and afd.id = dk.afdnr and
afd.id = da.afdnr and da.anr = a.id and a.beznr = ab.id and dk.knr = 3 and (f.bez like '*Mer*' or d.bez like '*Mer*' or ab.bez like '*Mer*')
GROUP BY f.bez, d.bez, sfest, mfest, afd.id, f.nummer, d.nummer
ORDER BY f.nummer, d.nummer;
In einer etwas abgespeckten Form funktioniert er ja.
mfg
Andreas
Geändert von Sertl (15.01.2004 um 12:49:35 Uhr)
|
15.01.2004, 12:35:02
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
ich weiß, nicht das was du wissen willst, aber wie wäre es, alles in eine tabelle zu packen?
|
15.01.2004, 12:48:54
|
Anfänger
|
|
Registriert seit: Dec 2003
Beiträge: 23
|
|
Ich möchte wissen, wieso dieser SELECT unter Access funktioniert und mir eine Lösungsmenge ausgibt.
Unter MySQL aber nicht.
Schafft es MySQL vielleicht nicht 8 Tabellen miteinander zu verknüpfen?
Und wie meinst du das mit alles in eine Tabelle packen?
Geändert von Sertl (15.01.2004 um 12:55:01 Uhr)
|
15.01.2004, 13:57:10
|
Junior Member
|
|
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
|
|
Hi,
Access und MySQL haben z.T. unterschiedliche SQL Syntax. Dies merkst Du z.B. auch bei generischen Zeichen (= *).
Lösungsvorschlag zu Deinem Problem, aber ungetestet:
SELECT ... s.sfest,s.mfest,...
FROM art INNER JOIN art_form_dekor AS afd ON art.id = afd.artnr INNER JOIN ...
WHERE f.bez like '*Mer*'...
Sprich: Tabellen mit INNER JOIN verknüpfen und dabei darauf achten, daß Du nach jedem INNER JOIN gleich die richtigen Bedingungen mit ON anführst. Im Moment ist z.B. "art" zuerst mit "form" verbunden, in der WHERE Klausel ist "art" aber mit "afd" verbungen. Das kann eventuell der Fehlergrund sein.
HTH,
Andy
|
15.01.2004, 14:23:22
|
Anfänger
|
|
Registriert seit: Dec 2003
Beiträge: 23
|
|
Habe jetzt die "=" in INNER JOIN geändert.
Nutzt auch nichts, es kommt immer noch die Meldung
"Ihr SQL-Befehl wurde...". Eine Lösungsmenge findet er immer noch nicht.
Ich dachte schon ich hätte die Testdaten aus Access falsch übernommen, aber dem ist nicht so.
PHP-Code:
SELECT f.bez AS fbez, d.bez AS dbez, d.sfest, d.mfest, afd.id AS afd_id
FROM art INNER JOIN art_form_dekor as afd ON art.id = afd.artnr
INNER JOIN form as f ON afd.fnr = f.id
INNER JOIN dekor as d ON afd.dnr = d.id
INNER JOIN dekorkriterium as dk ON afd.id = dk.afdnr
INNER JOIN dekor_artikel as da ON afd.id = da.afdnr
INNER JOIN artikel as a ON da.anr = a.id
INNER JOIN artikelbezeichnung as ab ON a.beznr = ab.id
WHERE dk.knr = 3 and (f.bez like '*Mer*' or d.bez like '*Mer*' or ab.bez like '*Mer*')
GROUP BY f.bez, d.bez, sfest, mfest, afd.id, f.nummer, d.nummer
ORDER BY f.nummer, d.nummer;
|
15.01.2004, 14:35:34
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
ich meine, dass es möglich ist, alle daten (auch wenn ich deinen speziellen fall nicht kenne) in einer tabelle zu speichern...dann fällt das ewige verknüpfen weg.
|
15.01.2004, 14:49:34
|
Junior Member
|
|
Registriert seit: Apr 2003
Ort: TÜ
Beiträge: 337
|
|
Hi,
versuch mal, das *- Zeichen bei like '*Mer*' in %- Zeichen zu ändern.
Also:
... LIKE '%Mer%'
Das hat bei mir auch immer wieder zu Problemen geführt, da ich an Deiner SQL Syntax auf die Schnelle keine Fehler sehen kann.
HTH,
Andy
P.S.: @feuervogel: Klar kann man alle Daten in einer Tabelle speichern. Sinnvoll ist das aber in den meisten Fällen nicht. Such mal im Google unter dem Stichwort "Normalisierung" nach.
|
15.01.2004, 15:01:56
|
Anfänger
|
|
Registriert seit: Dec 2003
Beiträge: 23
|
|
Danke,
jetzt gibt er mir endlich das aus, was er ausgeben soll.
Noch mal gibthx.
mfg
Andreas
|
15.01.2004, 18:27:45
|
SELFPHP Guru
|
|
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
|
|
@diver-network: klaro, über die verschiedenen normalformen hatte ich schon mal was gelesen... aber ich arbeite grade (und in zukunft) an einem projekt, bei dem etwa 50-80 db abfragen pro script-aufruf stattfinden würden und das mit insgesamt etwa 20-40 tabellen...da hab ich lieber eine tabelle und sortiere dann etwas rum...außerdem geben dir die 8 tabellen schon mal eine gewisse struktur vor, nach der du dich in zukunft richten musst...
|
15.01.2004, 19:30:45
|
|
SELFPHP Guru
|
|
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
|
|
Zitat:
Original geschrieben von diver-network
P.S.: @feuervogel: Klar kann man alle Daten in einer Tabelle speichern. Sinnvoll ist das aber in den meisten Fällen nicht. Such mal im Google unter dem Stichwort "Normalisierung" nach.
|
Klar, unter dem Stichwort findet man einiges, wie man die Antwortzeit seiner Webapplikation in Richtung unendlich steigern kann.
Oberste Prämisse bei der Webprogrammierung ist die Zeit, die LAMP oder WAMP benötigen, um das letzte Byte auszuliefern. Selbst ich, der ich relativ gemütlich bin, verkneife mir den Besuch von Webseiten, die länger als 1 sec. brauchen, um den Schotter zusammenzusuchen.
DB Zugriffe kosten Zeit und sind demzufolge zu minimieren. Was auf einem DBMS wie Oracle oder MSSQL Sinn macht, weil die neben Standard-SQL noch eine Menge mehr können, ist, wird es 1:1 auf MySQL-3 und MySQL 4.0 übertragen, tw. haaresträubender Unfug, mit dem man ggf. auch an der Funktionstüchtigkeit seines Systems kratzt.
Ein WBB Forum zB. kann ganz fix die komplette Blechkiste lahmlegen, wenn pconnect erlaubt wird, ein paar unwichtige Hacks (mit vielen JOINs) eingebaut werden und sich zeitgleich 100-150 schreibwütige User auf der Kiste tummeln. Soviel RAM paßt da nicht rein, um die Monster-Joins im RAM abzuhandeln, damit die Kiste nicht swappt.
Bei Windows ist sowas allerdings Wurscht - man ist ja eh daran gewohnt, daß das alles etwas länger dauert...
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:20:58 Uhr.
|