WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 15.10.2013, 00:04   #1
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard MySQL Frage: FullJoin 2er Tabellen, Reihenfolge abhängig?

Fragen an die DB Experten:
Sollte bei einem Fulljoin nicht die Reihenfolge der Tabellen egal sein?

Warum funtioniert dieses Beispiel nicht (Keine Fehlermeldung, es werden aber nur 0 Datensätze ausgegeben).

Code:
SELECT 
  t.text_title, 
  t.text_key, 
  t.text_group, 
  t.field,
  tts.text 
FROM text t, text_to_stores tts
where 
  t.status = 1 
  and tts.key = t.text_key
  and tts.store_id = 101
order by t.sort
Und das hier funktioniert (Die 12 Datensätze werden richtig ausgegeben):

Code:
SELECT 
  t.text_title, 
  t.text_key, 
  t.text_group, 
  t.field, 
  tts.text 
FROM text_to_stores tts, text t
where 
  t.status = 1 
  and tts.key = t.text_key
  and tts.store_id = 101
order by t.sort
Der einzige Unterschied ist, wie die Reihenfolge der Tabellen.
Kann mir jemand eine Erklärung dazu geben?
Hab mit dem Blödsinn ne Stunde versch...en.
____________________________________
www.mankra.com Meine private Site
mankra ist offline   Mit Zitat antworten
Alt 15.10.2013, 00:37   #2
pc.net
Aussteiger
 
Benutzerbild von pc.net
 
Registriert seit: 07.10.2001
Ort: Nettistan
Beiträge: 12.997

Mein Computer

Standard

lies dir mal die mysql-referenz zu join durch

http://dev.mysql.com/doc/refman/5.1/de/join.html
http://dev.mysql.com/doc/refman/5.1/...imization.html
____________________________________
Praktizierender Eristiker

No hace falta ser un genio para saber quién dijo eso.
Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein.
pc.net ist offline   Mit Zitat antworten
Alt 15.10.2013, 00:43   #3
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard

Kenn ich natürlich, weiß jetzt nicht, wonach ich suchen sollte.
Bei dieser Schreibweise handelt es sich ja um ein Full-Join.
Bei nem Outer Join, wärs schon klar (oder auch nicht, wenn ich jetzt so nachdenk, da ich sowieso nur die Datensätze brauch, wo es volle Datensätze gibt).
Ich verstehe nicht, warum Beispiel eins 0 Zeilen als Ergebniss erzeugt.
____________________________________
www.mankra.com Meine private Site
mankra ist offline   Mit Zitat antworten
Alt 16.10.2013, 11:51   #4
pc.net
Aussteiger
 
Benutzerbild von pc.net
 
Registriert seit: 07.10.2001
Ort: Nettistan
Beiträge: 12.997

Mein Computer

Standard

ich beziehe mich auf diesen punkt der doku:

Zitat:
Der Join-Optimierer berechnet die Reihenfolge, in der die Tabellen verknüpft werden sollten. Die durch LEFT JOIN oder STRAIGHT_JOIN erzwungene Lesereihenfolge für die Tabellen unterstützt den Join-Optimierer bei seiner Arbeit wesentlich effizienter, weil erheblich weniger Tabellenumstellungen zu überprüfen sind.
der mysql-optimierer kommt hier wohl durcheinander ...



was mir noch einfallen würde:
probier als erste die verbindungs-bedingung zw. den beiden tabellen ... dadurch sollte der optimizer beim parsen des statements jedenfalls zuerst erkennen, dass er beide tabellen für ein korrektes ergebnis verbinden sollte ... dann sollte die reihenfolge der tabellen auch unerheblich sein ...
nebenbei macht das so ein statement auch leichter lesbar - vor allem bei umfangreichen abfragen mit vielen tabellen hilft das sehr ...
____________________________________
Praktizierender Eristiker

No hace falta ser un genio para saber quién dijo eso.
Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein.
pc.net ist offline   Mit Zitat antworten
Alt 16.10.2013, 11:55   #5
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard

Also

Code:
 
SELECT 
....
FROM text t, text_to_stores tts
where 
  tts.key = t.text_key
  and t.status = 1 
  and tts.store_id = 101
Bringt keine Änderung, 0 Ergebnisse.
____________________________________
www.mankra.com Meine private Site
mankra ist offline   Mit Zitat antworten
Alt 16.10.2013, 11:59   #6
mankra
Schon länger dabei
 
Benutzerbild von mankra
 
Registriert seit: 19.08.2000
Ort: Steiermark
Alter: 50
Beiträge: 3.117

Mein Computer

Standard

Aber jetzt hab ichs:

Mit

Code:
 
FROM `text` t, text_to_stores tts
Klappt es.

D.h. kein Logigfehler, sondern "nur", daß die DB den Tabellen Namen text als Schlüsselwort interpretiert.
Ohne Fehlermeldung hab ich an dies nicht gedacht.
____________________________________
www.mankra.com Meine private Site
mankra ist offline   Mit Zitat antworten
Alt 17.10.2013, 00:17   #7
pc.net
Aussteiger
 
Benutzerbild von pc.net
 
Registriert seit: 07.10.2001
Ort: Nettistan
Beiträge: 12.997

Mein Computer

Standard

solch triviale fehler sind immer wieder witzig
____________________________________
Praktizierender Eristiker

No hace falta ser un genio para saber quién dijo eso.
Der wirklich faule Mensch ist oft extrem fleißig, denn er will möglichst schnell wieder faul sein.
pc.net ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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 an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:24 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag