webForumDet fria alternativet

Min första SQL-fråga

13 svar · 684 visningar · startad av LarsG

LarsGMedlem sedan dec. 200012 464 inlägg
#1

Jag är intresserad av vilket resultat olika DBMS ger på denna fråga

create table onerow(m char(1))

insert into onerow values('M')

select * from onerow a left outer join onerow b
 on a.m = 'X'

Så om du har tillgång till någon DBMS, kan du testa frågan och posta resultatet. (Är det någon som blir förvånad över resultatet?)

VideMedlem sedan dec. 19998 577 inlägg
#2

SQL-server plockade ut en post med M i kolumnen m och null i kolumnen m, varför då?

[R] SQL 2000

[R] För att det är en Left outer join såklart... ;)

Engine^Medlem sedan dec. 20003 887 inlägg
#3

Access 2002 tyckte att Join.uttrycket inte stöddes ;) A2k2 gillar väl inte ON a.m = 'X' förmodar jag.

PeeerMedlem sedan mars 20025 907 inlägg
#4

MySQL skrev:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO onerow
VALUES ( 'M' )
SELECT *
FROM onerow a
LE

LarsGMedlem sedan dec. 200012 464 inlägg
#5

Du får göra det som två satser, en insert och en select.

KristianstadMedlem sedan dec. 2002841 inlägg
#6

Hej LarsG. Efter all hjälp jag fått av dig tidigare :f så kan jag väl unna mig några minuter åt dig.

mySQL:
Skapade en tabell med namnet onerow. Den innehöll en kolumn vid namnet m som var en char(1) och Null var Yes.
Tabellen hade en post och den innehöll M

Skulle det bli något annat resultat? :q

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Vad blir resultatet av select-frågan med en left outer join?

@ndersMedlem sedan juni 200032 969 inlägg
#8

(SQL Server 7 ger samma resultat som Vide skriver om för SQL Server 2000)

mvh

KristianstadMedlem sedan dec. 2002841 inlägg
#9

Resultat:
M

MatteMedlem sedan aug. 20002 975 inlägg
#10

mysql 3.23.51 på Windows gav samma resultat som Vide och @nders.

K@llenMedlem sedan mars 20032 667 inlägg
#11

MySQL 3.23.56

m | m
M | null

LarsGMedlem sedan dec. 200012 464 inlägg
#12

Alla utom Access får godkänt. Vi kan nog avsluta övningen nu.

PANMedlem sedan feb. 2002130 inlägg
#13

Jag har sett att övningen är oficielt avslutad men kunde inte motstå frestelsen att prova,
när jag nu fick ett felmedelande så kanske jag kan få hjälp att reda ut vad det innebär ?
Inga problem med skapandet av tabellen men när jag kör frågan får jag följande felmedelande

select * from onerow a left outer join onerow b on a.m = 'X';
*
Fel på rad 1:
ORA-00933: SQL-kommando felaktigt avslutat

Jag använder Oracle 8i.

Asterixen som pekar på felet finns under left inte under select i original svaret.

PAN

LarsGMedlem sedan dec. 200012 464 inlägg
#14

Oracle 8i stöder inte join. Det kom i version 9.

I Oracle så skriver man outer join med

select * from onerow a , onerow b 
where  a.m = b.m (+)

Så vitt jag förstår så går det inte att få till en sådan join som jag skrev med hjälp av det outer-join stöd som finns i Oracle 8. Det går att skriva frågan med hjälp av union men det är inte så intressant då avsikten var att testa just outer join.

125 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)