Teil von  SELFPHP   Teil von  Praxisbuch  Teil von  Datenbankprogrammierung  Teil von  PHP und MySQL-Zugriffe
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

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

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 
 
Verknüpfte Tabellen (WHERE/JOIN): Seite 2

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen



Relationsalgebra

Die Verknüpfung von Tabellen unterliegt grundsätzlich der Relationsalgebra. Dahinter verbirgt sich nichts anderes als das Erzeugen neuer Relationen auf der Basis vorhandener Relationen. Joins sind dabei die Verbundmenge aus zwei oder mehr Relationen. Je nach Formulierung der Verknüpfung wird das Ergebnis ausgegeben.

Über den Typ der Verknüpfungsart werden verschiedene Joins unterschieden:
  • Inner Join
    Gibt nur die Datensätze zurück, bei denen die Verknüpfungsbedingung übereinstimmt. Das Einführungsbeispiel ist ein solcher Inner Join. Zum Anbieter wurden diejenigen Produkte ausgewählt, die diesem Anbieter zugeordnet sind. Es wurden keine Datensätze von Anbietern ausgegeben, die keine Produkte anbieten, bzw. es sind keine Produkte ausgegeben worden, die keinem Anbieter zugeordnet sind. Beim Inner Join handelt es sich um die typische Form, die Sie beim Verknüpfen von Tabellen benötigen.
  • Outer Join
    Gibt dieselben Datensätze wie ein Inner Join zurück. Allerdings werden hier alle Datensätze einer Tabelle ausgegeben, auch wenn keine korrespondierenden Datensätze in der jeweils anderen Tabelle vorhanden sind. In diesem Fall wird ein leerer Datensatz verknüpft.
  • Theta Join
    Üblicherweise werden Tabellen über gleiche Datensätze in bestimmten Feldern verknüpft. Die Verknüpfungsbedingung muss aber nicht unbedingt mit dem Gleichheitsoperator gebildet werden. Auch Ungleichheit und Kleiner-/Größer-Vergleiche sind möglich. In diesem Fall spricht man von einem Theta Join.


Left und Right Join

Hieraus resultieren dann die Begriffe Left und Right Join, je nachdem, von welcher der beiden Tabellen alle Datensätze ausgegeben werden. Bezogen auf unser Beispiel ist ein Outer Join eine Abfrage, bei der auch dann alle Anbieter ausgegeben werden, wenn ihnen keine Produkte zugeordnet sind.

Um Tabellen miteinander verknüpfen zu können, müssen die Felder, über die die Tabellen verknüpft werden, über einen kompatiblen Datentyp verfügen. Im Einführungsbeispiel wurden die Tabellen über die ID verknüpft, die jeweils als INTEGER definiert sind.


Verknüpfung über JOIN-Syntax

Beim Einführungsbeispiel handelte es sich um die alte SQL-Methode zur Realisierung von Verknüpfungen mit WHERE.
SELECT anbieter.name, telprodukte.produkt FROM anbieter, telprodukte WHERE anbieter.id = telprodukte.ida;

Die Verknüpfung innerhalb von Abfragen zwischen Tabellen kann jedoch, außer über die oben gezeigte WHERE-Bedingung, auch ANSI-SQL-92-konform über das Schlüsselwort JOIN und die Angabe der Verknüpfungsbedingung deklariert werden. Mit einem LEFT JOIN sieht die oben genannte Abfrage wie folgt aus:
SELECT anbieter.name, telprodukte.produkt FROM anbieter LEFT JOIN telprodukte ON anbieter.id = telprodukte.ida;

Ausgabe
NameProdukt
Deutsche TelekomT-ISDN
Deutsche TelekomT-Net
Deutsche TelekomT-Mobile
VIAG InterkomCall by Call
VIAG InterkomPreselect
MobilcomCity Call
MobilcomCall by Call

Die allgemeine Syntax hinter dem FROM des SELECT-Befehls lautet:
<Tabellenrefenz>, JOIN [ON <Verknüpfungsbedingung>] WHERE [<Suchbedingung>]

Verknüpfungsabfragen können beliebig komplex werden. Die Definition umfangreicher JOIN-Abfragen kann durchaus einige Zeit in Anspruch nehmen.

Die JOIN-Syntax soll nochmals an einem weiteren Beispiel gezeigt werden, einem Belegungsplan für die Kursbelegung in Hochschulen oder die Belegung von Zimmern in einem Hotel. Dies sind in der Regel n:m-Beziehungen. Das heißt für die Beispiele:
  • Ein Kurs kann von vielen Schülern besucht werden und ein Schüler kann viele Kurse besuchen.
  • Ein Hotel kann von vielen Gästen bewohnt werden und ein Gast kann diverse Zimmer buchen.



Bild 7.5: Kursbelegung, Schüler und Kurse unter Kontrolle in MySQLCC

Tipp: Sie sollten eine Testdatenbank mit dem Namen testbank für die folgenden Beispiele anlegen.




Verknüpfte Tabellen (WHERE/JOIN) Seite 1
 




:: Premium-Partner ::

Webhosting/Serverlösungen

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

ionCube Ltd. weitere Sponsoren
 


:: Buchempfehlung ::

Webseiten professionell erstellen

Webseiten professionell erstellen zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Dateien und Verzeichnisse mit TAR/Gzip komprimieren

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Einen Farbwert in den negativen Farbwert umrechnen

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2017 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt
© 2005-2017 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de