Hallo zusammen,
ich habe hier ein kleines Problem mit einem Suchfilter, welcher nur suboptimal funktioniert. Ich habe eine Projektbezogene Bilddatenbank erstellt. In deser gibt es die Möglichkeit, Bilder nach spezifischen Kriterien zu filtern. Es funktionieren eigentlich auch alle Filter. Bei der SUche nach Schlüsselwürtern gibt es aber noch ein keines Problem. Wenn ich nur einen Schlüsselwort Filter verwende, klappts problemlos. Suche ich jedoch noch nach einem zweiten Schlüsselwort, dann wirds nichts mehr.
EDIT: Ich arbeite mit MySQL 6.0
Meiner Funktion wird ein Array mit den abzufragenden BildIDs mirgegeben. Hier mal eine Beispielabrrage welche genereirt wird, wenn der User nach zwei Schlüsselwörtern sucht ohne dabei weitere Filter zu verwenden.
Hier die für die Abpfrage relevanten Tabellen:
imagesdb_connections:
Feld | Typ | NULL
-------------------------------
source | int(50) | NO |
destination | int(50) | NO |
type | varchar(50) | NO |
Beispiel Datensatz: Source=1 (KeywordID), Destination=462 (ImageID) type="keyword" (Beziehungstyp)
In dieser Tabelle wird definiert, welche Schlüsselwörter mit welchen bildern in Verbindung stehen.
imagesdb_keywords:
| Feld | Typ |NULL |Attr| Extra |
-----------------------------------------
| wordID | int(50) | NO | PRI |auto_increment |
| word | varchar(100) | YES | | |
imagesdb_images:
| Feld | Typ |NULL |Attr| Extra
------------------------------------------
| imageID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| imageName | varchar(20) | YES |
| imagePath | int(50) | YES |
| imageDescription | varchar(300) | YES |
| projectID | int(10) | YES |
| categoryID | int(11) | YES |
| DateInserted | varchar(50) | YES |
| DateUpdated | varchar(50) | YES |
Meine Erfahrunf mit komplexeren Abfragen lässt halt ein wenig zu wünschen übrig. Aber es kommt ja auch nicht alles von heute auf morgen.
Ich hoffe ihr könnt mir helfen.
Grüsse und danke
Luki
ich habe hier ein kleines Problem mit einem Suchfilter, welcher nur suboptimal funktioniert. Ich habe eine Projektbezogene Bilddatenbank erstellt. In deser gibt es die Möglichkeit, Bilder nach spezifischen Kriterien zu filtern. Es funktionieren eigentlich auch alle Filter. Bei der SUche nach Schlüsselwürtern gibt es aber noch ein keines Problem. Wenn ich nur einen Schlüsselwort Filter verwende, klappts problemlos. Suche ich jedoch noch nach einem zweiten Schlüsselwort, dann wirds nichts mehr.
EDIT: Ich arbeite mit MySQL 6.0
Meiner Funktion wird ein Array mit den abzufragenden BildIDs mirgegeben. Hier mal eine Beispielabrrage welche genereirt wird, wenn der User nach zwei Schlüsselwörtern sucht ohne dabei weitere Filter zu verwenden.
PHP-Code:
SELECT imagesdb_images.imageID FROM imagesdb_images
LEFT JOIN imagesdb_connections ON imagesdb_images.imageID = imagesdb_connections.destination
LEFT JOIN imagesdb_project ON imagesdb_images.projektID = imagesdb_project.projectID
LEFT JOIN imagesdb_locations ON imagesdb_project.locationID = imagesdb_locations.locationID
WHERE (imagesdb_bilder.imageID=462 OR imagesdb_images.imageID=463 OR ....)
AND (imagesdb_images.imageID =
imagesdb_connections.destination AND imagesdb_connections.source =3 OR imagesdb_images.imageDescription LIKE "%Brot%")
AND (imagesdb_images.imageID =
imagesdb_connections.destination AND imagesdb_connections.source =1 OR imagesdb_images.imageDescription LIKE "%Wasser%")
imagesdb_connections:
Feld | Typ | NULL
-------------------------------
source | int(50) | NO |
destination | int(50) | NO |
type | varchar(50) | NO |
Beispiel Datensatz: Source=1 (KeywordID), Destination=462 (ImageID) type="keyword" (Beziehungstyp)
In dieser Tabelle wird definiert, welche Schlüsselwörter mit welchen bildern in Verbindung stehen.
imagesdb_keywords:
| Feld | Typ |NULL |Attr| Extra |
-----------------------------------------
| wordID | int(50) | NO | PRI |auto_increment |
| word | varchar(100) | YES | | |
imagesdb_images:
| Feld | Typ |NULL |Attr| Extra
------------------------------------------
| imageID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| imageName | varchar(20) | YES |
| imagePath | int(50) | YES |
| imageDescription | varchar(300) | YES |
| projectID | int(10) | YES |
| categoryID | int(11) | YES |
| DateInserted | varchar(50) | YES |
| DateUpdated | varchar(50) | YES |
Meine Erfahrunf mit komplexeren Abfragen lässt halt ein wenig zu wünschen übrig. Aber es kommt ja auch nicht alles von heute auf morgen.
Ich hoffe ihr könnt mir helfen.
Grüsse und danke
Luki
Kommentar