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

[php/mysql] join..

Pagina: 1
Acties:

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-11 09:51

Saven

Administrator

Topicstarter
Hola,

Ik zit even te barsten over het volgende. Ik heb een tabel met producten, en een tabel die bijhoudt of de producten ooit een keer gesynct zijn. Als een product gesynct is komt er een record met die SKU in de synced tabel. Zo niet, dan is er geen record in de synced tabel. Ik wil namelijk alleen de producten ophalen die nog niet zijn gesynct.

De volgende code had ik geproduceerd..
SQL:
1
2
3
4
5
6
7
8
9
10
        SELECT
            i.*
        FROM
            products as i
        RIGHT JOIN
            synced as s
        ON
            s.sku = i.sku
        WHERE
            s.synced = 0


Ik had op internet gelezen dat een right join het mogelijk maakt om tabellen te joinen die niet per se al aan elkaar verbonden zijn zoals in dit geval. Ik heb ook een veld "synced" (boolean) in de sync tabel. Eigenlijk overbodig omdat als die row bestaat er per definitie gesynct is, maar dacht het hiermee makkelijker te maken. Niet dus :P

Heb ook geprobeerd om een inner join of left join te doen, maar ik krijg bij alle 3 de versies geen resultaat terug.. Volgens mij zie ik iets over het hoofd, maar ben nog een beetje aan het leren hoe joins werken. Weet iemand mij misschien te vertellen wat ik fout doe?

  • Teknix1982
  • Registratie: Januari 2005
  • Niet online
Select * from producten where sku not in (select sku from synced)

Verwijderd

Bij een right join zijn alle kolommen in de linker tabel NULL als er geen match is voor de ON conditie. In jouw geval wil je:
SQL:
1
2
3
4
SELECT    i.*
FROM      products i
LEFT JOIN synced s ON s.sku = i.sku
WHERE     s.sku IS NULL

of
SQL:
1
2
3
4
SELECT     i.*
FROM       synced s
RIGHT JOIN products i ON s.sku = i.sku
WHERE      s.sku IS NULL

  • Saven
  • Registratie: December 2006
  • Laatst online: 21-11 09:51

Saven

Administrator

Topicstarter
Ah helder :) thnx!