Toon posts:

[MySQL5] Zoeken in meerdere tabellen

Pagina: 1
Acties:
  • 41 views sinds 30-01-2008

Verwijderd

Topicstarter
Ik heb twee tabellen:

NZB
id
name
filename
filesize
date
user


CONTENT
id
filename
subject
poster
group
date
size
parts


Nu wil ik daar in zoeken. Dit doe ik met LIKE. Je krijgt dus zoiets:

SELECT * FROM nzb WHERE name LIKE '%$query%' OR filename LIKE '%$query%'

Wat nu de bedoeling is:

Tijdens een zoekactie wordt er in vier velden gezocht; namelijke nzb.name, nzb.filename, conent.poster en content.subject. Als hier een match gevonden wordt wil ik dat nzb.* EN content.subject geselecteerd worden en dit in een query, en distinct. Als er dus nog een match gevonden wordt en de NZB is al een keer geselecteerd dan hoeft hij deze niet nogmaals te selecteren.

Nu ben ik al een paar dagen aan het kutten maar ik krijg het maar niet voor elkaar.

SELECT nzb.* FROM nzb WHERE nzb.name LIKE '%$query% OR nzb.filename LIKE '%$query%' OR nzb.filename = (SELECT content.filename FROM content WHERE subject LIKE '%$query%'

SELECT * FROM nzb WHERE name LIKE '%$query%' OR filename LIKE '%$query%' UNION ALL SELECT * FROM content WHERE subject LIKE '%$query%'

Enzovoorts. Iemand die me uit de brand kan helpen :) ?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14-02 12:34

gorgi_19

Kruimeltjes zijn weer op :9

Wil je niet gewoon een JOIN gebruiken en zoeken op die conditie :?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

(LEFT) JOIN gebruiken kan al stukken code schelen :)

En dan kan je netjes uit meerdere tabels je content halen die je wilt

Verwijderd

Topicstarter
Hmm..

SELECT *
FROM nzb
WHERE name LIKE '%slut%'
OR filename LIKE '%slut%'
JOIN SELECT *
FROM content
WHERE subject LIKE '%slut%'
LIMIT 0 , 30

MySQL said:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'JOIN SELECT *
FROM content
WHERE subject LIKE '%slut%'
LIMIT 0 , 30' at line 5

8)7 ?

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 14-02 12:34

gorgi_19

Kruimeltjes zijn weer op :9

Erhm.. :?

Je kan ook iets over JOINS gaan lezen ?

Programming FAQ - SQL

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Verwijderd

SELECT * FROM nzb,content WHERE (name LIKE '%slut%'
OR filename LIKE '%slut%') AND nzb.filename=content.filename;

Als je meerdere content records hebt met dezelfde naam, zou je inderdaad iets als DISTINCT moeten kunnen gebruiken om de resultaten te beperken. Je kunt echter ook de resultaten gewoon ophalen en dan zelf even sorteren en filteren op unieke records als het je via SQL niet lukt :P

(Overigens: vorige poster heeft natuurlijk ook wel een punt :) )

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 13-02 14:51
pron database :+Nou, kan je even goed niets zeggen.

[ Voor 57% gewijzigd door whoami op 20-08-2006 22:31 ]


  • whoami
  • Registratie: December 2000
  • Nu online
Zoals er al gezegd wordt: verdiep je eens in wat basic database - kennis (wat joins echt wel zijn).
Dit is gewoon basic werk, en die syntax error kan je makkelijk zelf oplossen als je even de kleine moeite neemt om een SQL manual erbij te pakken, en de syntax van een SELECT statement even opsnort.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.