php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.12.2011, 19:59  
Neuer Benutzer
 
Registriert seit: 06.12.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
hmanski befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Abfrage über 3 Tabellen

Hallo,

ich kriege folgendes einfach nicht hin und hoffe, dass mir hier jemand weiterhelfen kann.

Ich habe 3 Tabellen
1. login (spalte: loginname)
2. custdetails (spalte loginname, meterid1, meterid2, meterid3)
3. meterdetails (meterid, verbrauch, medium etc)

ich will nun als Ergebnis alle meterids aus tabelle3, die mit der meterid1,2,3 aus Tabelle 2 und loginname aus tabelle1 übereinstimmen.

schon mal Vielen Lieben Dank für die Hilfe

Gruß
hmanski
hmanski ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.12.2011, 20:03  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Willkommen im Forum!

Damit Du hier nicht mit dem falschen Fuß einsteigst beherzige bitte diesen Thread.
Wichtige Punkte:
  • Wir helfen gern, wenn Du Initiative zeigst. Macht mal ist nicht.
  • Bitte benutze die Code-Box-Buttons und poste relevanten Code.
  • Bitte stelle verständliche Fragen in ordentlicher Sprache. Sei prägnant!
  • Bitte verwende für spätere Leser einen Threadtitel (Bitte aussagekräftige Threadtitel verwenden), der das Problem kurz beschreibt
  • Bitte drängle nicht.
  • Bitte markiere abgeschlossene Themen über den "Erledigt"-Link oben links.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 06.12.2011, 20:08  
Neuer Benutzer
 
Registriert seit: 06.12.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
hmanski befindet sich auf einem aufstrebenden Ast
Standard

Hi nikosch,

also ich habe es hiermit versucht:


im mySql Editor zeigt er zwar ein Ergebnis an, aber doppelt und dreifach. Auf der Webseite allerdings, erfolgt kein Ergebnis.

Code:
SELECT T1.meterid, T1.radioid, T1.periodstart, T1.periodend, T1.consumption, T1.unit, T1.medium FROM meter T1, apartment T2, building T3  WHERE T2.apartmentid='$apartmentid' AND T2.buildingid='$buildingid' AND T3.username='$username' AND T2.heatmid=T1.meterid OR T2.watermid=T1.meterid OR T2.hotwatermid=T1.meterid
Wobei die Variablen apartmentid und buildingid von der vorhergehenden Seite übergeben werden. Die Variable username ist eine globale Variable und also auch da. Ich glaube, dass man das mit der JOINT Anweisung hinbekommt, aber da steige ich aus.

Macht das Sinn?

Geändert von hmanski (06.12.2011 um 20:17 Uhr).
hmanski ist offline   Mit Zitat antworten
Alt 06.12.2011, 20:54  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Der Reihe nach:
Zitat:
aber doppelt und dreifach
Das hängt einzig von Deiner Verknüpfungslogik ab, also dem WHERE Teil. Erstmal toll, dass Du einen eigenen Code gepostet hast. Beachte mal bitte die Hinweise unter PHP.de Wiki | Debugging:SQL um die Query lesbar zu gestalten. Dann, richtig, JOIN (ohne T !) ist das Gebot der Stunde. Und auch gar nicht weiter kompliziert, hier musst Du nur die spezifischen zur Verknüpfung gehörenden Bedingungen aus dem WHERE ins ON-Teil verlagern. http://aktuell.de.selfhtml.org/artik...nbanken/joins/
Schließlich
Zitat:
Auf der Webseite allerdings, erfolgt kein Ergebnis.
ist dann ein weiteres Problem, was man erst lösen sollte, wenn Du die Query richtig hinbekommen hast.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 06.12.2011, 21:58  
Neuer Benutzer
 
Registriert seit: 06.12.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
hmanski befindet sich auf einem aufstrebenden Ast
Standard

aaalso, schon mal Danke für den Link. Hat mich weitergebracht.
Jedoch sind da noch 2 offene Punkte:
1. wie binde ich eine dritte Tabelle ein
2. die Folgende Abfrage direkt auf mySQL abgesetzt ergibt genau 3 Zeilen, was auch völlig korrekt ist, jedoch in Kombination mit PHP bekomme ich viel mehr Ergebnisse, was halt falsch ist. Woran kann das liegen?

Code:
SELECT 
T1.meterid, 
T1.radioid, 
T1.periodstart, 
T1.periodend, 
T1.consumption, 
T1.unit, 
T1.medium 
FROM meter T1 
JOIN apartment T2 
ON T2.apartmentid='$apartmentid' 
AND T2.buildingid='$buildingid' 
OR T2.heatmid=T1.meterid 
OR T2.watermid=T1.meterid 
OR T2.hotwatermid=T1.meterid

Geändert von hmanski (06.12.2011 um 22:23 Uhr).
hmanski ist offline   Mit Zitat antworten
Alt 06.12.2011, 21:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Naja, am PHP halt.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 06.12.2011, 22:08  
Neuer Benutzer
 
Registriert seit: 06.12.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
hmanski befindet sich auf einem aufstrebenden Ast
Standard

oki, Problem 2 ist klar geworden. Klarer Fehler meinerseits.
Aber, wie binde ich eine dritte Tabelle in die obige Anweisung?
hmanski ist offline   Mit Zitat antworten
Alt 06.12.2011, 22:14  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Na mit einem weiteren JOIN. Nochmal die Bitte, die Query so zu formatieren, dass man die Struktur auch sehen kann. Niemand mag hier endlose Textwürste lesen.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 06.12.2011, 22:53  
Neuer Benutzer
 
Registriert seit: 06.12.2011
Beiträge: 8
PHP-Kenntnisse:
Anfänger
hmanski befindet sich auf einem aufstrebenden Ast
Standard

klasse, habs hinbekommen.
hier die Lösung

Code:
SELECT T1.meterid, T1.radioid, T1.periodstart, T1.periodend, T1.consumption, T1.unit, T1.medium
FROM meter T1
JOIN apartment T2 ON T2.apartmentid =  '$apartmentid'
AND T2.buildingid =  '$buildingid'
AND (
T2.heatmid = T1.meterid
XOR T2.watermid = T1.meterid
XOR T2.hotwatermid = T1.meterid
)
JOIN building T3 ON T3.buildingid = T2.buildingid
AND T3.username =  '$username'
hmanski ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
abfrage über 2 tabellen elvenbane Datenbanken 4 06.01.2011 00:44
Abfrage von 3 Tabellen über odbc?! pfump Datenbanken 11 27.10.2010 08:58
[Erledigt] Abfrage über 2 Tabellen dauert zu lange Registrierer Datenbanken 3 05.06.2010 20:44
mySQL abfrage über mehrere Tabellen crustyroyal PHP Tipps 2010 3 23.04.2010 14:20
Problem mit Abfrage über zwei Tabellen Daylen Datenbanken 8 18.12.2009 14:07
SQL Abfrage über 2 Tabellen. 2te Tabelle nur max eines Feldes aus einer Gruppe jackie1983 PHP Tipps 2009 6 04.12.2009 12:37
[Erledigt] SQL Abfrage über 2 Tabellen, wenn eine davon leer ist Registrierer Datenbanken 13 18.05.2009 20:48
MySQL Abfrage über 5 Tabellen evtl. IF ghost120 Datenbanken 11 13.04.2009 20:00
sortierung einer Abfrage über 2 Tabellen mchacka Datenbanken 2 17.03.2009 17:55
MySQL Abfrage über 2 Tabellen Datenbanken 4 21.03.2006 11:44
Abfrage über zwei Tabellen (m. JOIN?) Spiff Datenbanken 3 13.02.2006 09:32
Mysql Abfrage über 3 Tabellen in Verbidung mit COUNT() PHP Tipps 2005-2 4 28.06.2005 07:47
Mysql Abfrage über 2 Tabellen mit Verknüpfung zuner 3. Datenbanken 2 26.10.2004 16:36
Abfrage über 3 Tabellen Datenbanken 3 20.09.2004 08:08

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql abfrage ergebnis dreifach

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




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum