[SQL/PHP] Zoekquery samenstellen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
De database wordt gebruikt voor het opslaan van metadata van afbeeldingen. Hierop moet ook kunnen worden gezocht, daarom dus een zoekfunctie.

Onderstaande query die ik hiervoor op dit moment gebruik werkt.
code:
1
2
3
4
SELECT f.foto_id, f.categorie_id, f.omschrijving, (SELECT p.naam 
FROM plaats p WHERE f.plaats_id = p.plaats_id), (SELECT s.naam 
FROM straat s WHERE s.straat_id = f.straat_id)
FROM foto f WHERE f.omschrijving REGEXP 'test' ORDER BY f.foto_id LIMIT 0, 500


Na het uitvoeren van deze query in bijv. phpmyadmin geeft hij correct het foto_id, categorie_id, de omschrijving, plaatsnaam en straatnaam.

Nu heb ik geprobeerd om de query uit te breiden zodat hij ook in de velden p.naam en s.naam zoekt naar 'test' op de volgende manier:

code:
1
2
3
4
5
6
SELECT f.foto_id, f.categorie_id, f.omschrijving, (SELECT p.naam 
FROM plaats p WHERE f.plaats_id = p.plaats_id), (SELECT s.naam 
FROM straat s WHERE s.straat_id = f.straat_id)
FROM foto f, straat s, plaats p WHERE f.omschrijving REGEXP 'test' OR p.naam
REGEXP 'test' OR s.naam REGEXP 'test'
ORDER BY f.foto_id LIMIT 0, 500


Dit werkt alleen totaal niet goed. Hij geeft als resultaat 500 keer hetzelfde foto_id, categorie_id, omschrijving, plaats en straat weer. Weet iemand hoe ik deze query fgoed moet samenstellen?

De indeling van de database er als volgt uit:
Afbeeldingslocatie: http://aycu24.webshots.com/image/15503/2004099686805774049_rs.jpg

Alvast bedankt voor de reacties!

Emielioz

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik zou me even gaan inlezen in joins als ik jou was :)

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Bedankt! :) Hij werkt, weer wat geleerd.

code:
1
SELECT f.foto_id, f.categorie_id, f.omschrijving, p.naam, s.naam, t.naam FROM foto f LEFT JOIN plaats p ON p.plaats_id = f.plaats_id LEFT JOIN straat s ON s.straat_id = f.straat_id LEFT JOIN toponiem t ON t.toponiem_id = f.toponiem_id WHERE f.omschrijving REGEXP 'test' OR p.naam REGEXP 'test' OR s.naam REGEXP 'test' OR t.naam REGEXP 'test' ORDER BY f.foto_id LIMIT 0, 500