php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-09-2006, 19:26
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard Abfrage über 3 Tabellen mit Join

Hi,

ich habe leider ein grosses Problem mit der Abfrage über 3 Tabellen und komme dabei einfach nicht weiter. Ich habe bereits auch in einem anderen Forum nach Lösungen gesucht, aber auch da war nichts was mir helfen konnte. Ich hoffe daher hier fündig zu werden, da ich sonst noch wahnsinnig werde.

Ich habe eine Tabelle mit Spielplänen. Die Tabelle „tblSpielplan“ sieht so aus:
Code:
+-------------+--------------+-----------+----------------+------------+------------+
| SpielplanID | SaisonLigaID | Datum     | Spieltagnummer | HeimTeamID | GastTeamID |
+-------------+--------------+-----------+----------------+------------+------------+
| 1           | 7            | 1.10.2006 | 1              | 55         | 56         |
| 2           | 7            | 1.10.2006 | 1              | 61         | 59         |
+-------------+--------------+-----------+----------------+------------+------------+
Nun möchte ich die Möglichkeit geben, diesen Spielplan wieder zu ändern. Das bedeutet, dass drei Sachen passieren müssen.
1. Auslesen des Spielplanes um die momentanen Spielbegegnungen anzeigen zu können
2. Auslesen einer zweiten Tabelle, die alle möglichen Teams ausliest.
3. Verbinden dieser zweiten Tabelle mit der dritten Tabelle um die Namen auszulesen.

Die Darstellung erfolgt dann über mehrere Dropdownfelder, wobei das momentan ausgewählte Team bereits selektiert ist.

Nun also mein Problem. Die zweite Tabelle „tblLigaTeams“ mit allen Teams sieht so aus:
Code:
LigaID
SaisonLigaID
TeamID
In der dritten Tabelle „tblTeams“ stehen die Team Namen:
Code:
TeamID
TeamName
Mein bisheriger Ansatz:
Code:
SELECT 
tblSpielplan.MatchNo,tblSpielplan.Datum,tblSpielplan.HeimTeamID,
tblSpielplan.GastTeamID,
tblLigaTeams.TeamID, tblTeams.TeamName
	
FROM
tblSpielplan
	
INNER JOIN
tblLigaTeams
ON tblSpielplan.SaisonLigaID=tblLigaTeams.SaisonLigaID

INNER JOIN 
tblTeams 
ON tblLigaTeams.TeamID=tblTeams.TeamID
	
WHERE
SaisonLigaID= '7' AND MatchNo='$MatchNo' ");
Bei 5 Teams in der Tabelle Liga Teams würde das also 5 Resultate ergeben. Nun versuche ich jedoch ein Array mit den jeweiligen Teams (Heim und GastTeamID) zu füllen, um dieses dann später in die Dropdownfelder einzubauen.

PHP-Code:
while ($Saisonmysql_fetch_array($select))
{
   
$SpielplanTeamIDHeim[]=$Saison['HeimTeamID'];
   
$SpielplanTeamIDGast[]=$Saison['GastTeamID'];

Bei 2 Spielen, sprich 2 Heim und 2 Gastmannschaften, jedoch 5 Duchläufen klappt das so natürlich nicht.

Wie kann man sowas also lösen, das man alle Teams aus der Tabelle tblLigaTeams auslesen kann und nur 2 Datensätze aus der Tabelle Spielpläne ?

Ich verzweifle noch. Jemand eine Idee, einen Ansatz damit ich weiterkomme? Vielen Dank im Voraus.
Mit Zitat antworten
  #2 (permalink)  
Alt 29-09-2006, 20:37
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wozu dient tblLigaTeams?
Mit Zitat antworten
  #3 (permalink)  
Alt 29-09-2006, 20:51
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es gibt verschiedene Ligen, daher hat jede Liga auch ihre eigenen Teams die ihr angehören. Das steht dann in "tblLigaTeams".
Mit Zitat antworten
  #4 (permalink)  
Alt 29-09-2006, 22:22
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich würde 'alle teams' separat zum voraus mit SELECT auslesen und in einen array speichern. Diese brauchst du dann für die Ausgabe des popups. dann liest du den aktuellen Spielplan aus und verwendest für das popup den array 'alleteams'.

Es geht meiner Meinung nach nicht gut, die Daten des Spielplans und die Daten des popups in einem SELECT auszulesen. Das heisst, das Auslesen ist kein Problem, aber daraus html zu generieren, wird mühsam.

Hier aber wie man die Daten des Spielplans und zusätzlich alle Mannschaften auf einmal ausliest.

Code:
SELECT A.*, Heim.teamname as Heimname,Gast.teamname as Gastname, 
  HT.teamid as HTid, HT.teamname as HTname, 
  GT.teamid as GTid, GT.teamname as GTname 
from tblSpielplan as A
  join tblLigaTeams as HL on HL.SaisonLigaId=A.SaisonLigaId
  join tblTeams as HT on HL.TeamdId=HT.teamId
  join tblLigaTeams as GL on GL.SaisonLigaId=A.SaisonLigaId
  join tblTeams as GT on GL.LigaId=GT.teamId
  join tblTeams as Heim on A.HeimTeamId=Heim.TeamId
  join tblTeams as Gast on A.GastTeamId=Gast.TeamId
  where A.SaisonLigaId=7
Erklärung. einige Tabellen werden mehrfach gejoint:
A - Spielplan
Heim - aktuelle Heimmannschaft
Gast - aktuelle Gastmannschaft
HL, HT - alle Mannschaften als mögliche Heimmannschaft
GL, GT - alle Mannschaften als mögliche Gastmannschaft
Mit Zitat antworten
  #5 (permalink)  
Alt 29-09-2006, 23:04
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Du bist jetzt der Zweite mit dem Vorschlag 2 Anfragen zu stellen, daher denke ich mal das ihr Recht habt und man manchmal einfach nicht so kompliziert denken muss. Ich habe dennoch Deinen Vorschlag mal ausprobiert, bekam jedoch keine Resultate zurück.

Es ist wirklich nicht einfach, wenn man alleine vor solchen Problemem steht und nicht weiss, welcher Weg nun der Richtige ist. Daher bin ich wirklich dankbar das es solche Boards gibt, wo man auch mal seine Gedanken austauscht.

Vielen Dank dafür. Ich werde mich jetzt mal damit versuchen, die 2 Anfragen und die Dropdowns zu erstellen.

Nochmal vielen Dank für Euer Feedback.
Mit Zitat antworten
  #6 (permalink)  
Alt 29-09-2006, 23:12
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Luka
Ich habe dennoch Deinen Vorschlag mal ausprobiert, bekam jedoch keine Resultate zurück.
Mein Vorschlag ist fehlerfrei, bezogen auf deine Beschreibung

(ausser wenn saisonligaid nicht numerisch sondern varchar() ist. Dann müsste where saisonligaid='7' stehen aber solche kleinigkeiten hättest du selber auspoliert)

Geändert von sternm (29-09-2006 um 23:15 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 29-09-2006, 23:16
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Entschuldige, vielleicht ist mir auch ein Fehler in der Übersetzung unterlaufen. Ich schreibe alles immer in Englisch und übersetze es dann wieder auf deutsch für das Board. Macht es leichter für alle hier denke ich. Da kann es aber dann vorkommen, das ich in der Schnelle was falsch zurück übersetzt habe. Deine SQL Anweisung war ja ziemlich mächtig.

Und Nein, es lag nicht an der 7...

Geändert von Luka (29-09-2006 um 23:19 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 30-09-2006, 00:15
sternm
 Banned
Links : Onlinestatus : sternm ist offline
Registriert seit: Sep 2006
Beiträge: 103
sternm ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Luka
Entschuldige, vielleicht ist mir auch ein Fehler in der Übersetzung unterlaufen. Ich schreibe alles immer in Englisch und übersetze es dann wieder auf deutsch
Hast du ein deutschsprachiges mySQL??

wie lautet dein echtes sql-statement und wie lautet mysql_error() ??????
Mit Zitat antworten
  #9 (permalink)  
Alt 30-09-2006, 00:43
Luka
 Registrierter Benutzer
Links : Onlinestatus : Luka ist offline
Registriert seit: Mar 2004
Beiträge: 215
Luka ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Jo habe ich. Nur die Tabellen haben alle englische Namen. Das meinte ich damit. Englische Namen könnten aber eher verwirren, deswegen schreibe ich die dann auch deutsch.

Eine Fehlermeldung kam nicht, nur die Ausgabe von mysql_num_rows($select) war 0.

Leider kann ich dir die SQL Anweisung nicht mehr komplett schreiben, da ich bereits an der Lösung mit 2 Anfragen schreibe und der Rest jetzt gelöscht ist.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

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 an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:27 Uhr.