[SQL] Hoe moet ik het wel doen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • PowerRun
  • Registratie: Mei 2001
  • Laatst online: 02-10-2024
Ik heb 3 tabellen:

users
id
naam

books
id
titel

whohas
userid
bookid

Nu de volgende query:

SELECT * from books, whohas WHERE books.id = whohas.bookid and whohas.userid <> huidige_user

Wat ik wilde was een lijst met boeken die huidige_user NIET heeft, maar iemand anders wel. Alleen nu geeft ie dus ook boeken weer die zowel iemand anders als huidige_user heeft. Dat laatste wil ik dus niet.

Kan iemand mijn SQL-geheugen enigzins opfrissen?

Acties:
  • 0 Henk 'm!

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 17-10 01:47

Gerco

Professional Newbie

code:
1
2
3
4
5
6
7
8
SELECT *
FROM books
WHERE books.bookid NOT IN (
  SELECT bookid
  FROM books,whohas
  WHERE books.bookid=whohas.bookid
    AND whohas.userid=huidigeuserid
}

Ofzoiets... ik ben niet een SQL mannetje...

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Acties:
  • 0 Henk 'm!

  • TheMrH
  • Registratie: April 2000
  • Laatst online: 11-10 10:02
SELECT * from books, whohas
WHERE books.id = whohas.bookid
and not whohas.userid = huidige_user

The box said 'requires Windows 95 or better', so I installed Linux...


Acties:
  • 0 Henk 'm!

  • dusty
  • Registratie: Mei 2000
  • Laatst online: 14-10 13:38

dusty

Celebrate Life!

Op zondag 08 juli 2001 21:32 schreef Gerco het volgende:
code:
1
2
3
4
5
6
7
8
SELECT *
FROM books
WHERE books.bookid NOT IN (
  SELECT bookid
  FROM books,whohas
  WHERE books.bookid=whohas.bookid
    AND whohas.userid=huidigeuserid
}

Ofzoiets... ik ben niet een SQL mannetje...
Draai de 2 where clausules om in de subquery en de query zal sneller werken.. *D

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
meen je dit serieus ??? (ik zou dit dus echt niet weten :P ) der zit wel logica in maar ... erm .. raar :P

hmmz dit is niet fijn om wakker bij te worden :+

Acties:
  • 0 Henk 'm!

  • PowerRun
  • Registratie: Mei 2001
  • Laatst online: 02-10-2024
Ok, dit is hoe ik het uiteindelijk heb opgelost. Over de efficiency ben ik nog niet helemaal uit, maar dat was ook van ondergeschikt belang voor deze query.
code:
1
2
3
select * from books, ((select bookid from whohas where bookid not in 
(select distinct bookid from whohas where userid= CURR_USR )) as deze)
where books.id=deze.bookid

Acties:
  • 0 Henk 'm!

Verwijderd

Op maandag 09 juli 2001 08:59 schreef dusty het volgende:

[..]

Draai de 2 where clausules om in de subquery en de query zal sneller werken.. *D
Een beetje query engine zal dat toch wel netjes gladstrijken en eerst de eenvoudigste manier van records schrappen kiezen?
Pagina: 1