php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.06.2011, 19:23  
Neuer Benutzer
 
Registriert seit: 20.06.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
Haron befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Abfragen verknüpfen

Hallo Community,
Ich bastele seit zwei Tagen und komm nicht weiter
Ich weiss auch nicht wirklich unter welchen Stichworten ich noch suchen soll.

Folgendes Problem:
Ich habe zwei Tabellen.
In Tabelle_1 sind Personen (NAME), die einen Ort (ORT) an Routen (ROUTE) besucht haben.
In Tabelle_2 sind mögliche Orte die an Routen liegen und aktiv ('Y') oder inaktiv 'N' sein können.

Folgende Abfrage(1) listet mit alle Ortem die eine Person besucht hat und dort länger als 3 Std. (10800s) war:
PHP-Code:
SELECT Tabelle_1.NAMETabelle_1.ZEITTabelle_1.ORTTabelle_1.ROUTE 
FROM Tabelle_1 WHERE 
(((Tabelle_1)='$name') AND ((Tabelle_1.ZEIT)>10800
AND ((
Tabelle_1.ROUTE)='$Route')); 
Folgende Abfrage(2) listet mir alle aktiven Orte:
PHP-Code:
SELECT Tabelle_2.ORTTabelle_2.AKTIVTabelle_2.ROUTE FROM Tabelle_2 
WHERE 
(((Tabelle_2.AKTIV)='Y') AND ((Tabelle_2.ROUTE)='$Route')); 
Die Aufgabe ist nun, eine Abfrage zu erstellen, die für eine bestimmte Person ('$name') die Orte (und die dort verbrachte Zeit - auch 0s oder Leer) listet, die noch nicht 3 Std. besucht wurden , also alle Datensätze der Abfrage 2 AUSGENOMMEN der, der Abfrage 1.

Die Orte und Routen beider Tabellen sind identisch.

Geht das überhaupt mit einer Abfrage?

Danke
Haron

Geändert von Haron (20.06.2011 um 19:35 Uhr).
Haron ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 21.06.2011, 14:28  
Neuer Benutzer
 
Registriert seit: 30.11.2010
Beiträge: 6
PHP-Kenntnisse:
Fortgeschritten
CKoenig befindet sich auf einem aufstrebenden Ast
Standard

Versuch's mal hiermit:
PHP-Code:
SELECT Tabelle_2.ORTTabelle_2.AKTIVTabelle_2.ROUTE 
FROM Tabelle_2
Tabelle_1
WHERE 
(Tabelle_1.ORT=Tabelle_2.ORT
  AND ((
Tabelle_1.ZEIT<=10800) OR (Tabelle_1.ZEIT IS NULL
  AND (((
Tabelle_2.AKTIV)='Y'
  AND ((
Tabelle_2.ROUTE)='$Route')) 
Willst Du das auf eine Person einschränken musst Du natürlich noch Tabelle_1.NAME=$name einfügen.

Grüße,
Carsten
CKoenig ist offline   Mit Zitat antworten
Alt 22.06.2011, 19:27  
Neuer Benutzer
 
Registriert seit: 20.06.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
Haron befindet sich auf einem aufstrebenden Ast
Standard

Danke erstmal für den Tip,

aber das geht so auch nicht.
Ich bin aber ein Stück weiter und habe eine Lösung die nur die Orte anzeigt.
Der Versuch die Zeit dazu anzuzeigen mündet aber wieder in Mehrfachergebissen oder da, dass Orte ohne Zeiten nicht angezeigt werden.

Ich poste sie hier wenn ich weiter bin.

Danke
Haron
Haron ist offline   Mit Zitat antworten
Alt 23.06.2011, 09:28  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

da musst du wohl mit einem Join arbeiten

Code:
SELECT *,Tabelle_2.ORT, Tabelle_2.AKTIV, Tabelle_2.ROUTE 
FROM Tabelle_2
LEFT JOIN Tabelle_1 
   ON Tabelle_1.ORT=Tabelle_2.ORT
WHERE
  ( (Tabelle_2.AKTIV)='Y') AND (Tabelle_2.ROUTE)='$Route') ) AND 
  ( (Tabelle_1.ZEIT<=10800) OR (Tabelle_1.ZEIT IS NULL) )
eventuell kann der * beim Select auch entfallen, wenn dir diese 3 Spalten schon reichen
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 23.06.2011, 20:40  
Neuer Benutzer
 
Registriert seit: 20.06.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
Haron befindet sich auf einem aufstrebenden Ast
Standard

Danke Eagle, ich probiere es gleich mal aus.
Als Ausgabe brauche ich alle Orte die Aktiv und die '$Name' noch nicht 3 Std besucht hat (incl. der Zeiten die '$Name' da war).
Der Knackpunkt sind die Zeiten der Orte an denen er noch nicht war. In diesem Fall existiert zwar ein Ort in Tabelle_2 aber kein Ort in Tabelle_1 und somit auch keine Zeit. Hier sollte ein 0 oder LEER erscheinen.

Die nachfolgende Abfrage bingt zumindest die richtigen Orte.
Aber bisher bin ich mit jedem Versuch gescheitert, die Zeiten dazu anzueigen.

PHP-Code:
        SELECT Tabelle_2.ORT
            FROM Tabelle_2
            WHERE
            
(
            
Tabelle_2.ORT NOT IN
            
(
                   
SELECT Tabelle_1.ORT
                FROM Tabelle_1
                 WHERE
                 Tabelle_1
.ROUTE='$Route'
                 
AND    Tabelle_1.NAME='$Name'
            
)
            OR
            
Tabelle_2.ORT IN
            
(
                   
SELECT Tabelle_1.ORT
                FROM Tabelle_1
                 WHERE
                 Tabelle_1
.ROUTE='$Route'
                 
AND    Tabelle_1.NAME='$Name'
                 
AND Tabelle_1.ZEIT<10800
            
)
            )
            AND 
Tabelle_2.AKTIV='Y'
            
ORDER BY Tabelle_2.ORT

Geändert von Haron (23.06.2011 um 20:50 Uhr).
Haron ist offline   Mit Zitat antworten
Alt 24.06.2011, 13:17  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

na - die Abfrage von mir macht das schon - du musst nur auf PHP-Seite oder womit du das weiterverarbeitest dann nachschauen, welche tabelle1.zeit im Ergebnis ein NULL liefern, das lässt sich ja abfragen - und demzufolge kannst du dort dann jeweils anstelle von '' (Leerstring) eben die Ziffer 0 ausgeben oder was immer du willst
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 24.06.2011, 20:14  
Neuer Benutzer
 
Registriert seit: 20.06.2011
Beiträge: 4
PHP-Kenntnisse:
Anfänger
Haron befindet sich auf einem aufstrebenden Ast
Standard

So habe ich das jetzt auch gelöst.
Ich lasse die gefundenen Orte in einer Schleife durchlaufen und hole mir die Zeiten bzw. 0 dann mit einer weiteren Abfrage.

Danke an alle

Haron
Haron 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
Zwei Abfragen zu einer zusammenfassen Extremefall PHP Tipps 2010 7 26.02.2010 18:00
Nicht die selben Daten abfragen alex9787 Datenbanken 9 31.01.2010 21:24
jpg abfragen alex9787 Datenbanken 1 27.01.2010 20:42
2 unterschiedliche Abfragen kombinieren lord_icon Datenbanken 3 06.12.2009 17:31
Mehrere Tabellen abfragen. Nicht verknüpfen ibeg Datenbanken 10 08.08.2009 23:26
[MySQL] IF / CASE: mehrere Werte abfragen Zeussi Datenbanken 3 01.08.2009 15:00
[Erledigt] in einem Query mehrmals die selben Felder mit unterschiedlichen IDs abfrag ghost120 Datenbanken 8 16.07.2009 14:41
Tabellen miteinander verknüpfen Suzi Datenbanken 12 27.05.2009 11:40
[Erledigt] dynamische Liste Abfragen verknüpfen und ausgeben. abi PHP Tipps 2009 3 13.05.2009 11:46
String nach Ziffern abfragen halskrause PHP Tipps 2009 7 07.02.2009 00:57
[Erledigt] 2 abfragen zu einer verknüpfen Jumper Datenbanken 2 25.07.2008 17:47
PDO und parallele Abfragen Normalo PHP Tipps 2008 1 09.06.2008 12:39
mehrere Abfragen (Selects) verbinden???? CIMM Datenbanken 15 03.05.2006 18:59
[Erledigt] 204 077 15-4 in DB mit WHERE als 204077154 abfragen Datenbanken 6 24.01.2006 11:47
variablen verknüpfen PHP Tipps 2004 1 19.06.2004 13:37

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
3 datenbank abfragen verbinden, php, abfragen kombinieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 12:23 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