[SQL] 'omgekeerde' inner join

Pagina: 1
Acties:

  • Bramster
  • Registratie: Juni 2001
  • Laatst online: 10:28
ik heb deze query

SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
SELECT 
                   Veilingen.Objectnr, 
                   Veilingen.Artnr, 
                   Artikelen.art_omschr, 
                   Veilingen.Aantal, 
                   Veilingen.Begin, 
                   Veilingen.Eind,
                   Artikelen.inkoop, 
                   Artikelen.inkoop * 2.4871, 
                   Artikelen.inkoop * 1.5710, 
                   Artikelen.inkoop * 1.3090, 
                   Veilingen.Bod, 
                   Veilingen.VerkoopPrijs, 
                   Artikelen.vzk, 
                   Veilingen.VerkoopPrijs + Artikelen.vzk, 
                   Veilingen.BmailDatum, 
                   Veilingen.Betaalmethode, 
                   Veilingen.VerzendDatum,
                   Veilingen.Gebruiker, 
                   Veilingen.FactNummer, 
                   Veilingen.BarcodeZending 
          
          FROM Veilingen 
          
          INNER JOIN Artikelen ON Veilingen.Artnr = Artikelen.artnr
          
          WHERE Veilingen.Ingevoerd = '1'
          
          ORDER BY Veilingen.Begin DESC


die mooi de veiling uit de database haalt waar het artikelnummer al van in de tabel `artikelen` staat, leuk en aardig, maar wat ik wil zijn de veilingen waar het artikel NIET van in de tabel `artikelen` staan

ik heb al wat geprobeert zoals "INNER JOIN Artikelen ON Veilingen.Artnr != Artikelen.artnr" maar dan krijg ik 71035 resultaten uit een tabel waar maar 100 regels in staan :+

nog een poging zonder resultaat:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$query2 = "SELECT `artnr` FROM `Artikelen` ";
$result2 = mysql_query($query2);

while($row2 = mysql_fetch_row($result2))
{
   $artnr = $row2[0];

   $query3 = "SELECT
                   Veilingen.Objectnr, 
                   Veilingen.Artnr, 
                   Veilingen.Aantal, 
                   Veilingen.Begin, 
                   Veilingen.Eind,
                   Veilingen.Bod, 
                   Veilingen.VerkoopPrijs, 
                   Veilingen.VerkoopPrijs + Artikelen.vzk, 
                   Veilingen.BmailDatum, 
                   Veilingen.Betaalmethode, 
                   Veilingen.VerzendDatum,
                   Veilingen.Gebruiker, 
                   Veilingen.FactNummer, 
                   Veilingen.BarcodeZending 
          
          FROM Veilingen 
 
          INNER JOIN Artikelen ON Veilingen.Artnr = Artikelen.artnr

          WHERE Veilingen.Ingevoerd = '1' AND Veilingen.artnr != '" . $artnr . "'
          
          ORDER BY Veilingen.Begin DESC";

met een extra WHERE statement erbij, maar ook hier een berg resultaten....

ik zie het effe niet meer :X
iemand een goeie tip om me weer op de goeie weg te krijgen?

  • Serpie
  • Registratie: Maart 2005
  • Laatst online: 05-02 21:24
Je kan met een subquery gaan werken dus iets als:

SELECT *
FROM Veilingen
WHERE Veilingen.artnr NOT IN (
SELECT Artnr
FROM Artikelen)

Maar weet niet zeker of dat werkt in MySQL, anders een LEFT JOIN, dan hoef je alleen maar te kijken waar de waardes van artNr NULL zijn in de artikelen tabel.

  • Kayshin
  • Registratie: Juni 2004
  • Laatst online: 09-03-2018

Kayshin

Bl@@T @@P!!!

Vanaf MySQL 4.1 is het mogelijk om één subquery te gebruiken. Zul je dus even moeten controleren of je deze versie gebruikt.

My personal videoteek: -Clique-; -NMe- is een snol!


  • Bramster
  • Registratie: Juni 2001
  • Laatst online: 10:28
aah, k, thx Kaysin, vroeg me al af waarom ik een subquery niet aan de gang kreeg

* Bramster gaat 4.1 installeren

[ Voor 49% gewijzigd door Bramster op 06-06-2005 10:10 ]


  • P_de_B
  • Registratie: Juli 2003
  • Niet online
code:
1
2
3
4
SELECT *
FROM Veilingen
LEFT OUTER JOIN Artikelen ON Veilingen.Artnr = Artikelen.artnr 
WHERE Artikelen.artnr IS NULL

Oops! Google Chrome could not find www.rijks%20museum.nl


  • Bramster
  • Registratie: Juni 2001
  • Laatst online: 10:28
P_de_B schreef op maandag 06 juni 2005 @ 10:12:
code:
1
2
3
4
SELECT *
FROM Veilingen
LEFT OUTER JOIN Artikelen ON Veilingen.Artnr = Artikelen.artnr 
WHERE Artikelen.artnr IS NULL
of zo natuurlijk _/-\o_
thx voor de tips :)

(dat 4.1 maar voor een ander keer laten, heb niet echt bepaald veel tijd :P)

edit:
hmm...vaag....als ik de 2 qeuries uitvoer krijg ik in totaal 101 resultaten (er er staan atm maar 100 veilingen in de db)

edit2:
nm, counter bugje :P

[ Voor 20% gewijzigd door Bramster op 06-06-2005 10:35 ]

Pagina: 1