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
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren |
12.08.2010, 15:36:09
|
Member
|
|
Registriert seit: Mar 2006
Alter: 38
Beiträge: 599
|
|
Abfrage über fünf Tabellen
Hallo zusammen, da ich nun wieder etwas mehr mit SQL zu tun habe, bin ich auch hier mal wieder zu Wege.
Zu meinem Problem:
Ich möchte aus einer Tabelle gleichzeitig drei weitere abfragen,welche Informationen aus einer weiteren beziehen. Hört sich komisch an, deshalb mal hier die Tabellen:
Code:
Arbeitsplatz:
ID|ID_PC|ID_DRUCKER|ID_TELEFON
--+-----+----------+----------
01| 1001| 2001| 3001
02| 1002| 2002| 3002
PC:
ID |ID_HERST|IP_ADDRESS|BEMERKUNG
----+--------+----------+---------
1001| 9001|1.1.100.11| nein
1002| 9002|1.1.100.12| jein
1003| 9003|1.1.100.13| eine
Drucker:
ID |ID_HERST|IP_ADDRESS|BEMERKUNG
----+--------+----------+---------
2001| 9004|1.1.100.14| druckt
2002| 9005|1.1.100.15| lala
2003| 9006|1.1.100.16| abcd
Telefon:
ID |ID_HERST|IP_ADDRESS|BEMERKUNG
----+--------+----------+---------
3001| 9007|99.1.10.11| ring
3002| 9008|99.1.10.12| lolo
3003| 9009|99.1.10.13| biep
Hersteller:
ID |H_NAME|FARBE |BEMERKUNG
----+------+----------+---------
9001|FSC |grau |sauber
9002|Medion|weiß |sauber
9003|Acer |grau |staubig
9004|HP |grau |OK
9005|Canon |schwarz |staubig
9006|Epson |grau |staubig
9007|Siemen|rot |gut
9008|Siemen|grau |gut
9009|AEG |schwarz |alt
Nun möchte ich aus der Arbeitsplatztabelle folgende Ausgabe erzeugen:
Code:
Arbeitsplatz:
ID|PC_HN |PC_IPADDRESS|DRUCKER_HN|TELEFON_HN
--+------+------------+----------+----------
01|FSC |1.1.100.11 |Canon |Siemen
02|Medion|1.1.100.12 |Epson |Siemen
Ich möchte also immer die IP-Adresse, aber auch den Herstellernamen der jeweiligen Arbeitsplatzkomponente wissen.
Wie bekomme ich das am besten hin?
__________________
In der Ruhe liegt die Kraft!
|
12.08.2010, 15:39:18
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Abfrage über fünf Tabellen
Zitat:
Zitat von KTB
[..]
Wie bekomme ich das am besten hin?
|
JOIN
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
12.08.2010, 16:13:40
|
Member
|
|
Registriert seit: Mar 2006
Alter: 38
Beiträge: 599
|
|
AW: Abfrage über fünf Tabellen
Das ist mir schon klar, jedoch scheitere ich bisher an dem Problem, dass ich mir nicht im klaren bin, wie ich jedesmal neu auf die Herstellertabelle zugreifen kann. Verbinde ich die Herstellertabelle über den Drucker, wird der passende Hersteller-Datensatz für den Drucker angezeigt. Jetzt ist mir nicht klar wie ich in der gleichen abfrage das gleiche nochmal für PC oder Telefon machen soll.
__________________
In der Ruhe liegt die Kraft!
|
12.08.2010, 16:22:15
|
|
Administrator
|
|
Registriert seit: Jul 2004
Beiträge: 3.707
|
|
AW: Abfrage über fünf Tabellen
Zitat:
Zitat von KTB
[..], jedoch scheitere ich bisher an dem Problem, dass ich mir nicht im klaren bin, wie ich jedesmal neu auf die Herstellertabelle zugreifen kann. Verbinde ich die Herstellertabelle über den Drucker, ...
|
Wie sieht Dein SQL-Statment bisher aus?
__________________
Gruss vt1816
Erwarte nicht, dass sich jemand mehr Mühe mit der Antwort gibt als Du Dir mit der Frage.
. . . . . Feedback wäre wünschenswert
Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.
Ansosnten gilt: Hilfe ausserhalb dieses Thread (PN, WhatsApp, Skype, Mail, ICQ, etc...) nur per Barzahlung oder Vorauskasse!
Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
|
13.08.2010, 11:18:07
|
Anfänger
|
|
Registriert seit: Jul 2010
Alter: 37
Beiträge: 29
|
|
AW: Abfrage über fünf Tabellen
Hallo KTB,
Zitat:
Zitat von KTB
Jetzt ist mir nicht klar wie ich in der gleichen abfrage das gleiche nochmal für PC oder Telefon machen soll.
|
Du suchst wahrscheinlich einen Self Join.
Gruß, Dennis
|
16.08.2010, 09:08:42
|
Member
|
|
Registriert seit: Mar 2006
Alter: 38
Beiträge: 599
|
|
AW: Abfrage über fünf Tabellen
Also bisher sieht es so aus:
Code:
SELECT HER1.H_NAME,HER2.H_NAME,HER3.H_NAME FROM
Hersteller AS HER1 RIGHT JOIN
(Arbeitsplatz AS AR1 LEFT JOIN PC ON AR1.ID_PC = PC.ID)
ON HER1.ID = PC.ID_HERST,
Hersteller AS HER2 RIGHT JOIN
(Arbeitsplatz AS AR2 LEFT JOIN Drucker ON AR2.ID_DRUCKER = Drucker.ID)
ON HER2.ID = Drucker.ID_HERST,
HERSTELLER AS HER3 RIGHT JOIN
(Arbeitsplatz AS AR3 LEFT JOIN Telefon ON AR3.ID_TELEFON = Telefon.ID)
ON HER3.ID = Telefon.ID_HERST
;
Dies gibt mir aber logischerweise 8 Zeilen zurück, da er "alles mit allem" verbindet:
Code:
FSC |HP |Siemen
Medion|HP |Siemen
FSC |Canon|Siemen
Medion|Canon|Siemen
FSC |HP |Siemen
Medion|HP |Siemen
FSC |Canon|Siemen
Medion|Canon|Siemen
Hey Dennis, Self Join hört sich nicht schlecht an, das werde ich mir sofort anschauen :)
__________________
In der Ruhe liegt die Kraft!
|
16.08.2010, 09:21:32
|
Member
|
|
Registriert seit: Mar 2006
Alter: 38
Beiträge: 599
|
|
AW: Abfrage über fünf Tabellen
Kann es sein, dass mir nur folgende Zeile gefehlt hat?
Code:
WHERE AR1.ID = AR2.ID AND AR2.ID = AR3.ID
Das komplet also so lauten muss:
Code:
SELECT HER1.H_NAME,HER2.H_NAME,HER3.H_NAME FROM
Hersteller AS HER1 RIGHT JOIN
(Arbeitsplatz AS AR1 LEFT JOIN PC ON AR1.ID_PC = PC.ID)
ON HER1.ID = PC.ID_HERST,
Hersteller AS HER2 RIGHT JOIN
(Arbeitsplatz AS AR2 LEFT JOIN Drucker ON AR2.ID_DRUCKER = Drucker.ID)
ON HER2.ID = Drucker.ID_HERST,
HERSTELLER AS HER3 RIGHT JOIN
(Arbeitsplatz AS AR3 LEFT JOIN Telefon ON AR3.ID_TELEFON = Telefon.ID)
ON HER3.ID = Telefon.ID_HERST
WHERE AR1.ID = AR2.ID AND AR2.ID = AR3.ID
;
Das Ergebnis scheint nämlich zu stimmen, oder ist das nur Zufall oder gar viel zu umständlich?
__________________
In der Ruhe liegt die Kraft!
|
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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:03:08 Uhr.
|