Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[MYSQL] Resultaat van een query inverteren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben bezig met een klein web appje om wat producten en hun uitleenstatus bij te houden.
Dit is de tabel structuur waar ik het probleem mee heb:
loan
-----
id
productid
employeeid

products
------------
id
productcode
productsn

In de tabel loan staan enkele artikelen die op dat moment uitgeleend zijn. In de tabel products staan alle producten met code en serienummer. De query die probeer te bouwen zou het volgende moeten kunnen:

geef alle producten uit de tabel products waarvan products.id niet gelijk is aan loan.productid.

De query waarvan ik dacht dat het zou werken:
SQL:
1
2
3
4
5
SELECT loan.id, loan.productid, products.id, products.code, products.sn
FROM loan
RIGHT JOIN products ON loan.productid = products.id
WHERE loan.productid <> products.id
ORDER BY products.code


Helaas krijg ik hier geen resultaat mee, geen foutmelding, maar gewoon een leeg resultaat.
Waar zit mijn denk fout?

  • remco_k
  • Registratie: April 2002
  • Laatst online: 08:28

remco_k

een cassettebandje was genoeg

Verwijderd schreef op dinsdag 14 augustus 2007 @ 10:37:
SQL:
1
2
3
4
5
SELECT loan.id, loan.productid, products.id, products.code, products.sn
FROM loan
RIGHT JOIN products ON loan.productid = products.id
WHERE loan.productid <> products.id
ORDER BY products.code


Helaas krijg ik hier geen resultaat mee, geen foutmelding, maar gewoon een leeg resultaat.
Waar zit mijn denk fout?
Je doet eerst een join: loan.productid = products.id
en even later: loan.productid <> products.id
Is niet raar dat daar geen resultaat uit komt of wa? :+

Je moet even deze kant op denken: NOT IN en een subselect.

@hieronder:
Niet die hele query voorkouwen joh, laat 'm effe zweten. :+

[ Voor 20% gewijzigd door remco_k op 14-08-2007 10:51 ]

Alles kan stuk.


  • J2pc
  • Registratie: Oktober 2002
  • Niet online

J2pc

UT Tux Edition

wat je nu vraagt is alles waar ((a==b) && (a!=b))

Je wilt alles wat niet is uitgeleend?

SELECT product....
FROM product
WHERE product.id NOT IN (select loan.productid FROM loan)

iets in die trant
suc6

/edit
traag :+

[ Voor 4% gewijzigd door J2pc op 14-08-2007 10:47 ]

"The computer is incredibly fast, accurate, and stupid. Man is unbelievably slow, inaccurate, and brilliant. The marriage of the two is a challenge and opportunity beyond imagination." © Stuart G. Walesh


Verwijderd

Topicstarter
J2PC en remco_k, thx.. met de subselect werkt perfect.
Zoals jullie zien is SQL niet mijn primaire bezigheid op een dag :)

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24

BikkelZ

CMD+Z

Een vreemde vraag, zo krijg je de producten terug die onder andere een keer niet gelijk zijn aan een product in de loan-tabel. Vervolgens ga je gegevens uit de loan tabel opvragen.

Kijk, alle producten die ook in de loan tabel staan, zijn ook een keer niet gelijk aan een product in de loan tabel, tenzij er maar een product in de loan tabel staat. Effectief kun je dus net zo goed gewoon JOINen en niks doen.

Ik denk zelf dat je de producten wilt hebben die niet uitgeleend zijn. Dat doe je zo:

De MySQL manier:

SQL:
1
2
3
4
5
SELECT products.id, products.code, products.sn
FROM loan
LEFT JOIN products ON loan.productid = products.id
WHERE loan.productid IS NULL
ORDER BY products.code


De officiële manier:

SQL:
1
2
3
4
5
SELECT products.id, products.code, products.sn
FROM products
WHERE products.id NOT IN
( SELECT loan.productid FROM loan )
ORDER BY products.code

iOS developer


Verwijderd

Topicstarter
BikkelZ, thx! de onderste query was al gebrouwen..

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 24-11 23:24

BikkelZ

CMD+Z

Tja ik had een hoop tabjes open staan dus deze thread had nog geen antwoorden toen ik mijn verhaal aan het tikken was ;)

iOS developer

Pagina: 1