Black Friday = Pricewatch Bekijk onze selectie van de beste Black Friday-deals en voorkom een miskoop.

[MySQL] Join vraagje

Pagina: 1
Acties:

  • ArjanC
  • Registratie: Juli 2001
  • Laatst online: 02-11 08:20
Volgens mij kijk ik erover heen, maar ik zit met een query die ik niet goed krijgt.

Ik heb 2 tabellen met de volgende velden :

Tabel1
A
B
C
D
E

Tabel2
A
D

nu wil ik een query bouwen die alles uit Tabel1 pakt maar dan alleen als tabel1.D <> tabel2.D

nu had ik deze geniale query bedacht maar dan laat hij alles uit tabel1 x het aantal waardes van tabel2 zien

SELECT * FROM tabel1 INNER JOIN tabel2 ON (tabel1.D <> tabel2.D)

Iemand een idee hoe ik dit goed krijgt?

Ik heb dit al geprobeerd maar gaf niet de juiste output :

SELECT Tabel1.A, Tabel1.B, Tabel1.C, Tabel1.D, Tabel1.E FROM Tabel1, Tabel2 WHERE Tabel2.D <> Tabel1.D

SELECT *
FROM tabel1
LEFT JOIN tabel2
ON tabel1.D <> tabel2.D

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 25-10 14:28
Alle records uit 1 die niet in 2 staan is een andere manier om het te formuleren.
Je kunt een WHERE NOT IN (...) doen of een LEFT JOIN doen en testen op null waardes.

[ Voor 5% gewijzigd door _js_ op 20-06-2008 21:20 ]


  • croontje
  • Registratie: April 2004
  • Laatst online: 26-07 00:34
En het volgende

SELECT * FROM tabel1 as t1, tabel2 as t2 WHERE t1.A = T2.A AND t1.D <> t2.D

  • ArjanC
  • Registratie: Juli 2001
  • Laatst online: 02-11 08:20
_js_ schreef op vrijdag 20 juni 2008 @ 21:19:
Alle records uit 1 die niet in 2 staan is een andere manier om het te formuleren.
Je kunt een WHERE NOT IN (...) doen of een LEFT JOIN doen en testen op null waardes.
Bedankt, ik zal hier eens op googlen!
croontje schreef op vrijdag 20 juni 2008 @ 21:23:
En het volgende

SELECT * FROM tabel1 as t1, tabel2 as t2 WHERE t1.A = T2.A AND t1.D <> t2.D
Hier zeg je toch dat t1.A overeen moet komen met t2.A ?

ik zal wat meer uitleg geven, ik heb misschien een beetje weinig neergezet..

Tabel1 heeft een 30.000 records, veld D bevat een record in wel genre het moet vallen, dit kan op dit moment van alles zijn, van typo's tot lege velden.
tabel2.D bevat die genre's, dit zijn er op dit moment 12 stuks.

Ik wil dus 25 regels van tabel1 laten zien, waarvan het genre (tabel1.D) niet overeenkomt met de genres die ik wil (tabel2.D)

misschien dat dit helpt :) bedankt!

  • ArjanC
  • Registratie: Juli 2001
  • Laatst online: 02-11 08:20
jaahh

Where not in was de oplossing :)

SELECT *
FROM tabel1
WHERE tabel1.D NOT
IN (

SELECT tabel2.D
FROM tabel2
)

s-i-m-p-e-l :) en een stuk rapper dan mijn andere query's

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

burp2001 schreef op vrijdag 20 juni 2008 @ 21:03:
nu had ik deze geniale query bedacht maar dan laat hij alles uit tabel1 x het aantal waardes van tabel2 zien
Als ie alles fout doet is ie niet zo geniaal he ;) Je mist een stukje basisbegrip over wat een join doet. Een innerjoin is in principe een cross join met een filter - en een cross join geeft wel het carthetisch produkt van 2 tabellen, oftewel rowcount(t1)*rowcount(t2) resultaten. Dus als je inner join met = bijvoorbeeld X resultaten geeft, geeft het omkeren van die condition per definitie (t1*t2)-X resultaten. Simpele logica ;)

Professionele website nodig?


  • ArjanC
  • Registratie: Juli 2001
  • Laatst online: 02-11 08:20
curry684 schreef op zaterdag 21 juni 2008 @ 12:51:
[...]

Als ie alles fout doet is ie niet zo geniaal he ;) Je mist een stukje basisbegrip over wat een join doet. Een innerjoin is in principe een cross join met een filter - en een cross join geeft wel het carthetisch produkt van 2 tabellen, oftewel rowcount(t1)*rowcount(t2) resultaten. Dus als je inner join met = bijvoorbeeld X resultaten geeft, geeft het omkeren van die condition per definitie (t1*t2)-X resultaten. Simpele logica ;)
eh, jah ;) bedankt voor de uitleg :D

(had ik nu maar een vak geleerd...)
Pagina: 1