heute haben sich zwei Fragen ergeben, auf die ich noch keine Lösungen gefunden habe. Die Abfragen möchte ich übrigens in PHP realisieren. Evntl. stößt mich hier jemand auf die richtige Lösung oder hat gute Links zu Tutorials, Beispielen, Schlagwörtern oder SQL-Statements. (Vielleicht auch ein Link zu einem Thread, der eins der Themen behandelt, konnte leider keinen finden)
Zu meinen Fragen:
1.) Ich habe 2 Tabellen BILDER und TEAMS. Die Tabelle BILDER beinhaltet neben allgemeinen Informationen zu verschiedenen Bilddateien auch zwei Felder TEAM1_ID und TEAM2_ID. Die Tabelle TEAMS beinhaltet verschiedene Informationen wie NAME oder KATEGORIE zu Teams. Jedes Team hat außerdem eine ID, die auch der Primärschlüssel ist (und die ich mit den TEAM-IDs aus BILDER vergelichen will)
Ich möchte nun eine Abfrage erstellen, die Ergebnisse aus BILDER ausgibt und gleichzeitig die IDs (TEAM1_ID und TEAM2_ID) aus der Tabelle TEAMS abfragt und mir das Feld NAME passend dazu ausgibt.
TEAMS:
---------
id | name | kategorie | ..... |
----------------------------------
1 | n1 | kat1 | ...... |
2 | n2 | kat2 | ...... |
3 | n3 | kat1 | ...... |
4 | n4 | kat2 | ...... |
BILDER:
----------
team1_id | team2_id | beschreibung | ..... |
------------------------------------------------------
1 | 3 | beschr1 | ..... |
2 | 4 | beschr2 | ..... |
0 | 0 | beschr3 | ..... |
4 | 3 | beschr4 | ..... |
Folgende Abfrage habe ich (Ich gebe die Abfrage aus dem Kopf wieder, daher kann sie auch leicht anders sein..:
SELECT
b.*,
t.name AS team1_name,
t.name AS team2_name
FROM BILDER AS b, TEAMS AS t
WHERE (b.id = team2_name)
AND (b.id = team1_name)
Die Abfrage funktioniert soweit, dass zu jedem BILDER Datensatz in der die beiden TEAM1_ID und TEAM2_ID nicht 0 sind, die entsprechenden Ergebnisse mit den Namen aus TEAMS ausgegeben werden. Allerdings sind die Felder TEAM1_ID und TEAM2_ID keine Pflichtfelder in der BILDER Tabelle. Falls also kein Bezug zu einem Team angelegt ist, ist die ID jeweils 0.
ERGEBNISS (So soll es sein):
----------
team1_id | team2_id | beschreibung | ..... | team1_name | team2_name
-----------------------------------------------------------------------------------------
1 | 3 | beschr1 | ..... | n1 | n3
2 | 4 | beschr2 | ..... | n2 | n4
0 | 0 | beschr3 | ..... | | <--- Dort ist der "Fall 0"
4 | 3 | beschr4 | ..... | n4 | n3
Die Frage ist nun, wie man es Richtig macht, bzw. wo mein/e Fehler liegt/liegen.
2) Mein zweites Problem ist eventuell etwas umfangreicher. Es geht wieder um die oben beschriebenen Tabellen. Und zwar möchte ich eine Volltextsuche über ein Feld von BILDER realisieren - Das Feld heißt beschreibung. Eine Suche mit LIKE funktioniert zwar, aber das Feld Beschreibung kann auch (mehrere) allgemeine Stichworte enthalten, was eine Volltextsuche Sinnvoller macht. Meine Vorgehensweise ist vor jeder Datenbankabfrage die folgende:
1. Zunächst update ich die Tabelle ($sql_query ="ALTER TABLE BILDER ADD FULLTEXT(beschreibung)")
2. Dann frage ich die Tablle (ungefähr so) ab: "SELECT * FROM BILDER WHERE MATCH(beschreibung) AGAINST ('MEIN SUCHSTRING');
Die Suche führt allerdings zu keinen Ergebnisse, worin auch mein Problem liegt...
Vielen Dank für alle Sachdienlichen Hinweise,
Marcus
Comment