/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[mysql 3.23.38-nt] reference til "oversætt~
Fra : Jesper Stocholm


Dato : 04-02-03 18:00

Jeg mener, at der på et tidspunkt i denne gruppe er blevet postet et link
til en side, hvor der listes en række af de std-problemer med kan komme
ud for, når man skal omskrive fx sql med nestede selects til mysql-SQL.
Er der nogen af jer, der ligger inde med et sådant link ?

Grunden til at jeg spørger er, at jeg pt sidder og omskriver en lang
række SQL-forespørgsler fra Access til mySQL, og jeg er ved at få grå hår
i hovedet over det. Fx skal jeg kunne følgende:

Tabel1

| id | Navn |
------------
1 Jens
2 Ib
3 Hans

Tabel 2

| andet_id | id |
-----------------
1 1
2 1
3 2
4 2
5 1

Jeg vil gerne kunne udtrække navn + id i tabel1, hvor der ikke findes en
tilhørende række i tabel2. Resultatet bør altså være

| id | Navn |
-------------
3 Hans

Mit problem er jo, at jeg ikke kan bruge WHERE tabel1.id NOT IN (SELECT
table2.id FROM table2)

--
Jesper Stocholm - http://stocholm.dk
** Vil det sige, at ham Lars er et stort brød på 15 år ? **
Svar venligst til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

 
 
Peter Brodersen (04-02-2003)
Kommentar
Fra : Peter Brodersen


Dato : 04-02-03 21:31

On Tue, 4 Feb 2003 17:00:01 +0000 (UTC), Jesper Stocholm
<skal.du.absolut.vise.min.emailadresse.ved.svar@stocholm.invalid>
wrote:

>Mit problem er jo, at jeg ikke kan bruge WHERE tabel1.id NOT IN (SELECT
>table2.id FROM table2)

Endnu engang kan du bruge JOINs.

Du skal bare LEFT JOIN'e tabel2 på tabel1, og hive alle rækker ud,
hvor tabel2's andet_id er NULL.

Fx:
mysql> CREATE TABLE tabel1 (id INT, navn TINYTEXT);
mysql> CREATE TABLE tabel2 (andet_id INT, id INT);
mysql> INSERT INTO tabel1 VALUES (1,'Jens'),(2,'Ib'),(3,'Hans');
mysql> INSERT INTO tabel2 VALUES (1,1),(2,1),(3,2),(4,2),(5,1);
mysql> SELECT tabel1.id, tabel1.navn FROM tabel1 LEFT JOIN tabel2 ON
tabel1.id = tabel2.id WHERE tabel2.andet_id IS NULL;

+------+------+
| id | navn |
+------+------+
| 3 | Hans |
+------+------+
1 row in set (0.00 sec)

--
- Peter Brodersen

Jesper Stocholm (05-02-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 05-02-03 12:54

Peter Brodersen wrote :

> On Tue, 4 Feb 2003 17:00:01 +0000 (UTC), Jesper Stocholm
> <skal.du.absolut.vise.min.emailadresse.ved.svar@stocholm.invalid>
> wrote:
>
>>Mit problem er jo, at jeg ikke kan bruge WHERE tabel1.id NOT IN (SELECT
>>table2.id FROM table2)
>
> Endnu engang kan du bruge JOINs.
>
> Du skal bare LEFT JOIN'e tabel2 på tabel1, og hive alle rækker ud,
> hvor tabel2's andet_id er NULL.

> mysql> SELECT tabel1.id, tabel1.navn FROM tabel1 LEFT JOIN tabel2 ON
> tabel1.id = tabel2.id WHERE tabel2.andet_id IS NULL;

mange tak ... jeg kan se, at jeg nok er blevet "for meget" mærket af
udelukkende at have skrevet sql til Access, MSSQL,Teradata etc i længere
tid. Derfor skal jeg lige mentalt indstille mig på at have fremgravet
finterne med null-felter i (OUTER) JOINS i modsætning til de nestede
selects kombineret med IN-operatoren etc.



--
Jesper Stocholm
http://stocholm.dk
Copenhagen, Denmark

Jesper Stocholm (20-02-2003)
Kommentar
Fra : Jesper Stocholm


Dato : 20-02-03 21:54

Jesper Stocholm wrote :

> Jeg mener, at der på et tidspunkt i denne gruppe er blevet postet et
> link til en side, hvor der listes en række af de std-problemer med kan
> komme ud for, når man skal omskrive fx sql med nestede selects til
> mysql-SQL. Er der nogen af jer, der ligger inde med et sådant link ?

vupti ... jeg faldt over den selv i aften

http://www.mysql.com/doc/en/ANSI_diff_Sub-selects.html



--
Jesper Stocholm - http://stocholm.dk

Svar til gruppen og ikke til mig privat !
Skriv under det du svarer på - www.usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408926
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste