Hallo,
Ich habe einen Online-SHop und möchte eine Suche erstellen.
Ich nutze PostgreSQL 8.4.
schon einmal an die Volltextsuche von PostgreSQL gedacht?
produktid name
0 ipad
1 iphone
2 ipod touch
3 blackberryund eine Tabelle mit Angeboten
id angebotname produktid
0 ipad4free 1
1 iphone4free 2
2 blackberryNOT4free 3
Wenn ich in die Suche "ip" eingebe, möchte ich alle angebote haben bei denen ein Produkt mit "ip" angeboten wird anhand der produktid.
SELECT Angebote.produktid, name,id, angebotname FROM Produkte
INNER JOIN Angebote ON Angebote.produktid=Produkte.Produktid
WHERE Produkte.name ILIKE '%".$searchterm."%'
Leider bekomme ich dann nur _ein_ Ergebnis. =/
Deine Query, um $programmiersprache bereinigt und mit Aliasnamen versehen:
SELECT
p.produktid,
p.name,
a.id,
a.angebotname
FROM
Produkte p
INNER JOIN
Angebote a
ON
a.produktid = p.produktid
WHERE
p.name ILIKE '%ip%';
Ich will aber Angebot 0 und 1 bekommen und ggf. halt noch mehr, falls noch mehr da sind.
liefert mir erwartungsgemäß das von Dir gewünschte Ergebnis. Es muss also etwas anderes falsch sein. Prüfe also im Postgres-Client Deiner Wahl die Query und lass Dir mal vor dem Ausführen die von Dir erzeugte Query ausgeben.
Bevor ich's vergesse: wenn Du Benutzereingaben (wie Suchbegriffe) in dynamisch zusammengesetzem SQL verwendest, solltest Du den Kontextwechsel beachten. Dies gilt auch für PostgreSQL.
Freundliche Grüße
Vinzenz