SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 15.01.2004, 12:31:40
Sertl Sertl ist offline
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)
Mit Zitat antworten
  #2  
Alt 15.01.2004, 12:35:02
feuervogel feuervogel ist offline
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?
Mit Zitat antworten
  #3  
Alt 15.01.2004, 12:48:54
Sertl Sertl ist offline
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)
Mit Zitat antworten
  #4  
Alt 15.01.2004, 13:57:10
diver-network diver-network ist offline
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
__________________
Delphine, Wale, Orcas und mee(h)r:
tauchen in Alor/Indonesien
http://www.alor-dive.com
Mit Zitat antworten
  #5  
Alt 15.01.2004, 14:23:22
Sertl Sertl ist offline
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 fbezd.bez AS dbezd.sfestd.mfestafd.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 and (f.bez like '*Mer*' or d.bez like '*Mer*' or ab.bez like '*Mer*')
GROUP BY f.bezd.bezsfestmfestafd.idf.nummerd.nummer
ORDER BY f
.nummerd.nummer
Mit Zitat antworten
  #6  
Alt 15.01.2004, 14:35:34
feuervogel feuervogel ist offline
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.
Mit Zitat antworten
  #7  
Alt 15.01.2004, 14:49:34
diver-network diver-network ist offline
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.
__________________
Delphine, Wale, Orcas und mee(h)r:
tauchen in Alor/Indonesien
http://www.alor-dive.com
Mit Zitat antworten
  #8  
Alt 15.01.2004, 15:01:56
Sertl Sertl ist offline
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
Mit Zitat antworten
  #9  
Alt 15.01.2004, 18:27:45
feuervogel feuervogel ist offline
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...
Mit Zitat antworten
  #10  
Alt 15.01.2004, 19:30:45
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
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...
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:16:38 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt