OyvindN Skrevet 2. april 2005 Del Skrevet 2. april 2005 Tabell 1 --------------------- | id | product_id | 17 | 900 | 23 | 44677 | 24 | 44671 Tabell 2 -------------------- | id | product_id | 28 | 44677 | 23 | 900 Hvordan lister jeg ut product_id's som ikke er felles? Som 44671 i dette tilfellet? Lenke til kommentar
Gjest Slettet-rXRozPkg Skrevet 2. april 2005 Del Skrevet 2. april 2005 (endret) Kan det være så enkelt som dette tro?: SELECT product_id FROM Tabell1, Tabell2 WHERE NOT Tabell1.product_id = Tabell2.product_id; Endret 2. april 2005 av Slettet-rXRozPkg Lenke til kommentar
OyvindN Skrevet 2. april 2005 Forfatter Del Skrevet 2. april 2005 Nei, får null resultater. Lenke til kommentar
mikaelandre Skrevet 2. april 2005 Del Skrevet 2. april 2005 (endret) SELECT product_id FROM Tabell1, Tabell2 WHERE NOT EXISTS( SELECT 1.product_id, 2.product_id FROM Tabell1 AS 1, Tabell2 AS 2 WHERE 1.product_id = 2.product_id ); Edit: ehh..... SELECT 1.product_id, 2.product_id FROM Tabell1 AS 1, Tabell2 AS 2 WHERE 1.product_id <> 2.product_id; litt enklere..... og mysql støtter vel ikke subqueries så bra heller (Har ikke testet, men mener det funker) Endret 2. april 2005 av mikaelandre Lenke til kommentar
Oracel Skrevet 2. april 2005 Del Skrevet 2. april 2005 Slik jeg ser det vil det være mest fordelaktig å hente ut to resultatsett, og så prosessere disse i applikasjonslaget. Det går også an å hacke til noe med subqueries, men dette vil sannsynligvis bli en stygg og lite oversiktelig løsning.Synes dog det virker veldig besynderlig at du har behov for noe slikt, kan det være en idé å ta en gjennomgang av database-designet og se om det er noe der som kan forbedres? Lenke til kommentar
kaffenils Skrevet 4. april 2005 Del Skrevet 4. april 2005 Veldig enkelt. 1. Hent alle data fra Tabell1 hvor product_id ikke finnes i Tabell2. 2. Hent alle data fra Tabell2 hvor product_id ikke finnes i Tabell1. 3. Lag en union SQL mellom disse. SELECT dbo.Table1.product_id FROM dbo.Table1 LEFT OUTER JOIN dbo.Table2 ON dbo.Table1.product_id = dbo.Table2.product_id WHERE (dbo.Table2.product_id IS NULL) UNION SELECT dbo.Table2.product_id FROM dbo.Table1 RIGHT OUTER JOIN dbo.Table2 ON dbo.Table1.product_id = dbo.Table2.product_id WHERE (dbo.Table1.product_id IS NULL) Til Oracel: Det er ikke lurt å gjøre dette clientside ved å bruke cursors slik du foreslår. Hvis det er snakk om store mengder data så vil det ta betydelig lengre tid enn ved å la SQL serveren gjøre spørringen. Cursors er SIRUP i forhold til SQL spørringer. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå