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)
Hilfe Community Kalender Heutige Beiträge Suchen

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 20.06.2008, 15:19:15
mjs mjs ist offline
Anfänger
 
Registriert seit: Jun 2008
Alter: 53
Beiträge: 2
adressdatenbank mit join über mehrer tabellen

hallo forum,

ich habe 3 tabellen

tabelle 1 heisst adressen
tabelle 2 heisst fone
tabelle 3 heisst fax

ich hab in tabelle 1 die felder
id
name
adresse

in tabelle 2 die felder

fone_nummer
adress_id

in tabelle 3 die felder

fax_nummer
adress_id

folgendes szenario:

eine adresse hat mehrere (3) fone-nummern und mehrere (2) fax-nummern

frage:
wie muss ich die sql-abfrage formulieren, damit ich name, adresse, alle fone-nummern und alle fax-nummern in einer abfrage zusammenbekomme?
(es muessten also maximal 3 ergebniszeilen herauskommen, bei denen 1x die fax-nummer = NULL ist)

das muss doch gehen - oder steh ich total auf dem schlauch?!

wenn ich es per left-join (adressen left join fone_nummer on fone_nummer.adress_id=adressen.id left join fax_nummer on fax_nummer.adress_id=adressen.id) versuche erhalte ich ein kartesisches produkt aus fax & fone_nummer (also anstatt der gewuenschten 3 ergebnisreihen 6) in dem alles meoglichen kombinationen aus fax und fone_nummer dargesetllt werden.

ich moechte jedoch nur eine kombination aus haupttabelle (adressen) und den anderen beiden (fax und fone) in der jeder zutreffende datensatz nur 1x vorkommt.

kann mir irgendjemand da weiter helfen?
danke fuer eure hilfe!
gruesse
mjs
Mit Zitat antworten
  #2  
Alt 21.06.2008, 02:25:35
ch.bielmeier ch.bielmeier ist offline
Anfänger
 
Registriert seit: Jun 2008
Alter: 56
Beiträge: 35
AW: adressdatenbank mit join über mehrer tabellen

Was du meinst ist eine Privot-Tabelle. Diese gibt es aber in MySQL nicht. Aber du könntest mit GROUP_CONCAT() die Telefonnummern und die Faxnummern zusammenfahren und sie durch einen besonderen SEPERATOR trennen. Dadurch kannst du alle Telefon, bzw. Faxnummen zB in ein Array laden und du hast sie wieder einzeln
PHP-Code:
     SELECT
       a
.namea.adresse,
       
GROUP_CONCAT(b.fone_number SEPARATOR '$') AS tel,
       
GROUP_CONCAT(c.fax_nummer SEPARATOR '$') AS fax
     FROM adressen a
     LEFT JOIN fone b ON a
.id b.adress_id
     LEFT JOIN fax c ON a
.id c.adress_id
     GROUP BY a
.id 
Besser wäre es wenn du die Fax- und Tel-Tabelle zusammenfähst und eine Spalte mit einer eindeutigkeit erzeugst
Bsp:
id (Autowert)
id1 (Verknüpfung zu deiner Adresstabelle)
art (ZB. 1 für telefon und 2 für Fax, kannst dann auch 3 für Mobiltel nehmen usw.)
nummer (Die dazugehörige Nummer)

Geändert von ch.bielmeier (21.06.2008 um 02:27:35 Uhr)
Mit Zitat antworten
  #3  
Alt 23.06.2008, 14:34:53
mjs mjs ist offline
Anfänger
 
Registriert seit: Jun 2008
Alter: 53
Beiträge: 2
AW: adressdatenbank mit join über mehrer tabellen

gute idee - das mit der art (telefon/fax) als enum-feld.
...
danke auch fuer den hinweis auf das Privot-Tabellen-Problem!
...
ich hatte allerdings gedacht, dass so etwas moeglich sein muesste, da ja das ergebnis einer "normalisierung" einer (beispielhaften) datenbank exakt zu meinem ergebnis (resp. deinem vorschlag) fuehren muesste.
wenn ich also meine datenbank so plane, muesste doch auch die abfrage moeglich sein - zumindest glaubte ich das bis dato...
...
also muss ich damit leben, dass eine zweifache 1:n (gewissermassen 1:n:n) beziehung nicht moeglich ist?
bzw. eine passende abfrage?
...
Danke aber trotzdem fuer den tipp!!!
gruesse
mjs
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 aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
5 Tabellen durch JOIN verknüpft Callisto MySQLi/PDO/(MySQL) 0 10.10.2007 14:05:03
3 Tabellen Left Outer Join kevmaster MySQLi/PDO/(MySQL) 1 28.07.2007 14:59:53
Zwei Aggregatfunktionen in JOIN über drei Tabellen Nico #949494 MySQLi/PDO/(MySQL) 1 29.03.2007 14:47:58
4 Tabellen verknüpfen - INNER, OUTER und LEFT Join Franzx MySQLi/PDO/(MySQL) 0 13.11.2006 10:10:51
Query über 3 Tabellen mit JOIN madmat MySQLi/PDO/(MySQL) 2 26.09.2006 12:24:20


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:57:48 Uhr.


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


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