webForumDet fria alternativet

Min första SQL-fråga

Databaser & SQL

13 svar · 686 visningar · startad av LarsG

Medlem sedan dec. 200012 464 inlägg
Frågan#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?)

Medlem 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... ;)

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.

Medlem 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

Medlem sedan dec. 200012 464 inlägg
#5

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

Medlem 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

Medlem sedan dec. 200012 464 inlägg
#7

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

Medlem sedan juni 200032 967 inlägg
#8

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

mvh

Medlem sedan dec. 2002841 inlägg
#9

Resultat:
M

Medlem sedan aug. 20002 975 inlägg
#10

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

Medlem sedan mars 20032 667 inlägg
#11

MySQL 3.23.56

m | m
M | null

Medlem sedan dec. 200012 464 inlägg
#12

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

Medlem 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

Medlem 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.

265 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)