08. juli 2004 - 12:19Der er
19 kommentarer og 1 løsning
full outer join med mysql
jeg har to tabeller..
en der hedder services som indeholder: serviceid, servicetype, displayname, serviceurl, abouturl og en der hedder userservices som indeholder: brugerid, serviceid, expiredate
jeg vil godt lave en full outer join så jeg får alle poster fra services tabellen og de poster fra userservices tabellen hvor brugerid er lige med 1125
jeg har prøvet med den her:
SELECT userservices.brugerid,userservices.serviceid,userservices.expiredate,services.serviceid,services.servicetype,services.displayname,services.serviceurl,services.abouturl FROM userservices FULL OUTER JOIN services ON userservices.serviceid = services.serviceid WHERE userservices.brugerid = 1125
(SELECT * FROM tabel1 LEFT JOIN tabel2 ON tabel1.x = tabel2.x) UNION (SELECT * FROM tabel1 RIGHT JOIN tabel2 ON tabel1.x = tabel2.x WHERE tabel1.x IS NULL)
ikke kønt, men det er det bedste jeg kan finde på lige nu.
CREATE TABLE t1 (f1 INTEGER PRIMARY KEY,f2 VARCHAR(50)); CREATE TABLE t2 (f1 INTEGER PRIMARY KEY,f2 VARCHAR(50)); INSERT INTO t1 VALUES (1,'A'); INSERT INTO t1 VALUES (2,'BB'); INSERT INTO t2 VALUES (2,'BB'); INSERT INTO t2 VALUES (3,'CCC'); (SELECT * FROM t1 LEFT JOIN t2 ON t1.f1=t2.f1) UNION (SELECT * FROM t1 RIGHT JOIN t2 ON t1.f1=t2.f1 WHERE t1.f1 IS NULL); DROP TABLE t1; DROP TABLE t2;
->arne_v: Jep, det er sandt. Men hvad nu når data overføres til Java (læsning via ResultSet osv.)? I så fald oversættes INTEGER=NULL vel til 0 i Java, og så er det ikke muligt at skelne?
I SQL har man altså NULL (som både kan "optræde som" numerisk og karakter), hvilket man ikke har i Java.
Hvordan ville man i Java bære sig ad, hvis man skulle repræsentere NULL? Her har man f.eks. Double.NaN, som vel smager lidt af NULL, men man har ikke f.eks. Integer.NaN. Hvorfor egentlig ikke? Ville det ikke være naturligt at definere den største Integer som Integer.NaN og lade Integer.MAX_VALUE være 1 mindre (Double.NaN er vist i princippet 1 større end Double.MAX_VALUE)?
->arne_v: Ja, elegant. Din bemærkning sendte mig lidt rundt på nettet til bla. LINQ..spændende, spændende.
Lad mig til sidst spørge dig: 1. Hvilket MS-software har man præcis brug for, hvis man vil arbejde med C#? 2. Har man i øvrigt mulighed for selv at tilføje funktionalitet til Java? (i forhold til Java-kompileren, tænker jeg). Det kunne f.eks. være egne operatorer mv.
Med disse "Compiler Compiler"-programmer (f.eks. JavaCC) kan man vel (i princippet) skrive sin egen Java-compiler og dermed også inkludere nye operatorer etc.
Findes der "open-source" Java-compilere, hvor noget sådan faktisk er muligt?
(der findes f.eks. til SAS et produkt SAS/Toolkit - som i øvrigt er helt umuligt at anvende - men hvor tankegangen er, at man kan skrive sine egne SAS-procedurer og inkludere i SAS-sproget)
nu er procedurer notorisk nemmere at lave end operatorer
men principielt kunne du godt lave en SuperJava compiler som compilede en udvidet Java syntax inklusive operatorer på egne klasser til standard Java byte kode
jeg tror ikke at det er helt simpelt
og slet ikke moderne
det er AOP der er mest fokus på med hensyn til udvidelser til Java - og så script udvidelser a la Groovy/Jython
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.