Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: SQL: Kaksi liitosta samaan tauluun

mmikko [25.01.2016 14:52:31]

#

tere taas!

taulu1

id hometeam awayteam

taulu2

id team class

taulu1 sisältää otttelut, jotka päivittyvä automaattisesti netistä ja taulu2 sisältää joukkueelle antamani luokan(a,b,c,d,e).

yritän nytten saada sql kyselyllä aikaan seuraavanlaista kyselyä, jossa yhdistetään nuo kaksi taulua:

hometeam awayteam hclass aclass
Derby Brighton A A

select ottelut.HomeTeam, ottelut.AwayTeam, teams.name, teams.class from ottelut
inner join teams
ON ottelut.HomeTeam=teams.nimi

en ole varma, onko tämä edes mahdollista suorittaa näin? kokeilin and:llä myös tuohon, mutta palauttaa tyhjää.

e: eli ylläoleva toimii oikein, mutta miten saisin, jotta myös vierasjoukkueelle haetaan tuo luokka tuolta toisesta taulusta. jos siis laitan and

ottelut.AwayTeam=teams.nimi

tulostaa tyhjää.

groovyb [25.01.2016 15:30:50]

#

--Pseudo
SELECT column_name(s)
FROM table1
INNER JOIN table2 -- tai JOIN table2
ON table1.column_name=table2.column_name;
--Esimerkki
SELECT Customers.CustomerName, Orders.OrderID
FROM Customers
INNER JOIN Orders
ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerName;

Yleensä taulut ovat relaatiomallin mukaisesti avaimilla kiinni toisissaan, ja avainta käytetään joinissa. Mikään ei estä joinia ilman avaimia, kunhan datatyypit ovat kolumneissa samoja (ottelut.HomeTeam=teams.nimi). Avaimia käyttämällä varmennat sidoksen rivien välillä, ettet esimerkiksi palauta toisesta taulusta rivejä, jotka on alunperin sidottu eri kohderiviin.

Esim ylläolevan mallin mukaisesti, pitäisi olla seuraavanlaisesti

TEAMS - taulu

TeamID Primary key

OTTELUT -taulu

HomeTeamID Foreign key TEAMS taulun TeamID:seen
AwayTeamID Foreign key TEAMS taulun TeamID:seen

select kotijoukkue.name, vierasjoukkue.name, kotijoukkue.class, vierasjoukkue.class from ottelut
join teams as kotijoukkue
ON ottelut.HomeTeamID=kotijoukkue.TeamID
join teams as vierasjoukkue
ON ottelut.AwayTeamID=vierasjoukkue.TeamID

mmikko [25.01.2016 22:27:57]

#

Onko mitään, mihin ette tiedä vastausta? tarkoitan, että toimii kuin junanvessa. kiitos groovyb!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta