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 1

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



Ein wichtiges Thema bei der Selektion von Daten aus der Datenbank ist die Verknüpfung von verschiedenen Tabellen für die Ausgabe. Das relationale Datenmodell bzw. die Anlage der Tabellen mit relationalen Verknüpfungen gewährleistet Ihnen eine effektive Datenhaltung. Wie an verschiedenen Stellen bereits erläutert wurde, sind diese relationalen Verknüpfungen zwischen verschiedenen Tabellen ein ständiger Begleiter bei der Datenbankarbeit. Auch bei SELECT-Abfragen über mehr als eine Tabelle ist es notwendig, diese relationalen Verknüpfungen handhaben zu können, da die Verknüpfung in den SELECT-Statements von Ihnen formuliert werden muss. Diese Verknüpfungen werden als Joins bezeichnet.

Sie können Tabellen auf zwei verschiedene Arten miteinander verknüpfen:
  • Über eine WHERE-Bedingung oder
  • über den SQL-Befehl JOIN.

Einführungsbeispiel für Verknüpfungen

Um Verknüpfungen zu demonstrieren, fangen wir am besten mit einem einfachen Beispiel an. In diesem Beispiel liegen zwei Tabellen vor. Die Tabelle, die alle Produkte enthält, ist referenziell mit der Tabelle aller Anbieter verknüpft. Es handelt sich dabei also um eine 1:n-Beziehung.

Für dieses Beispiel soll nunmehr eine Tabelle erzeugt werden, die alle Anbieter und deren Produkte auflistet. In der Praxis wäre die Tabelle natürlich noch länger und würde beispielsweise Preisinformationen etc. enthalten. An dieser Stelle ist ein vereinfachtes Beispiel jedoch ausreichend, um Ihnen beim Thema Joins schnellere Erfolgserlebnisse zu ermöglichen.

Die zu erzeugende Tabelle hat dann folgendes Aussehen:

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


Um das richtige Ergebnis zu erreichen, müssen Sie die Verknüpfungen in der Abfrage nachbilden und die sachliche Zuordnung »Produkt gehört zu Anbieter« darstellen.

Eine Möglichkeit, diese Abfrage zu formulieren, lautet:
SELECT anbieter.name, telprodukte.produkt FROM anbieter, telprodukte WHERE anbieter.id = telprodukte.ida;

Die Verknüpfung der Tabelle ist also in der WHERE-Bedingung dargestellt. Wenn Sie diese Abfrage ohne die WHERE-Bedingung formulieren, würde Ihnen MySQL eine Liste aller möglichen Kombinationen aus Anbietern und Produkten liefern.

Hinweis: Gelegentlich kann es vorkommen, dass die Schlüsselfelder der beteiligten Tabellen denselben Namen tragen. In diesem Fall werden Sie die Bedingung unter Angabe des jeweiligen Tabellennamens nach dem Muster Tabelle.Spalte präzisieren müssen.


Bezeichnung von Spalten

Die Verwendung des Sterns * als Ersatzeichen liefert sämtliche Spalten der verknüpften Tabelle. Das ist jedoch nur in seltenen Fällen erforderlich. Üblicherweise benötigen Sie nur eine bestimmte Anzahl von Spalten. In der SELECT-Anweisung sind dann die Spalten aufzulisten, die in der Ergebnistabelle erscheinen sollen. Grundsätzlich können Sie die Spalten wie gewohnt mit ihrem Namen auflisten, auch wenn sie unterschiedlichen Tabellen angehören:
SELECT kundenNr, Firma, Ort
FROM kunden, anbieter
WHERE kundenNr = KdNr

Dabei ist jedoch auf gleichnamige Spalten zu achten.

Um diese unterscheiden zu können, müssen Sie die Feldnamen gegebenenfalls mit dem vorangestellten Tabellennamen kennzeichnen:
SELECT kunden.kundenNr, kunden.Firma
anbieter.nr, anbieter.Firma, anbieter.Ort...

Eine solche Schreibweise erleichtert zudem die Lesbarkeit des Codes. Wollen Sie gleichnamige Felder ausgeben, ist hierfür ein Aliasname zu bestimmen, damit sich die Felder in der Ergebnistabelle unterscheiden lassen:
SELECT kunden.Firma AS Kfirma ...

Im PHP-Skript greifen Sie über diese Namen auf die betreffenden Spalten zu.


Verknüpfung mehrerer Tabellen über WHERE

Sind mehr als zwei Tabellen zu verknüpfen, wird die Abfrage um die entsprechenden Tabellen und WHERE-Bedingungen erweitert.

Die Syntax lautet dann wie folgt:
SELECT <Feldliste> FROM Tabelle_1, Tabelle_2, ..., Tabelle_n WHERE Tabelle_i.Spaltenname Tabelle_j.Spaltenname AND Tabelle_m.Spaltenname;
Wobei i,j,m für den jeweiligen Tabellennamen steht und nach FROM aufgelistet sein muss.



Datenbanktabellen ändern
 




:: Premium-Partner ::

Webhosting/Serverlösungen

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

HighText Verlag Graf und Treplin OHG weitere Sponsoren
 


:: Buchempfehlung ::

TYPO3 Kochbuch

TYPO3 Kochbuch 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


Datum auf Gültigkeit überprüfen

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

SELFPHP Code Snippet


Sekunden in Tage, Stunden, Minuten und Sekunden formatieren

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