Forum > Webbutveckling relaterat > Databaser och SQL
I denna tråd tänkte jag presentera ett problem och visa en lösning.
Ni får gärna skicka in egna frågor om sqlproblem ni stöter på, via PM eller mailen hello@christher.se
Så tar jag upp dett här sedan.
Hoppas detta uppskattas.
Lag och matcher
Två tabeller, en som heter teams och en som heter games.
Strukturen för tabellen teams
id, team, suffix
1, Djurgården, IF
2, Timrå, IK
Strukturen för tabellen games id, home, away
Innehåller1, 1, 2
2, 2, 1
Utskrtiften ska se ut så här
1, Djurgården IF - Timrå IK
2, Timrå IK - Djurgården IF
För att lösa det, måste vi använda oss av join, där teams tabellen används två gånger med olika alias,
och tabellen games används som join tabell. Vi måste även använda en funktion som heter CONCAT_WS.
Lösningen på problemet ser ut så här.
SELECT
g.id,
CONCAT_WS(' - ', CONCAT_WS(' ', t1.team, t1.suffix),
CONCAT_WS(' ', t2.team, t2.suffix)
) game
FROM
teams t1
JOIN
games g
ON
(t1.id = g.home)
JOIN
teams t2
ON
(t2.id = g.away);
Ett bra verktyg för just MySQL är MySQL Workbench
Det enda verktyg som du behöver för att administrera din MySQL server.
Lite vad man kan göra
Ett bra verktyg för just MySQL är MySQL Workbench
Det enda verktyg som du behöver för att administrera din MySQL server.
Lite vad man kan göra
Ett tips skulle va om du gick igenom hur man använder Workbench. Kommer ihåg när de kom och jag förstod inte mycket utav det. Tyckte och tycker fortfarande bättre om MySQL Administrator bara för att jag inte förstår Workbench.
För övrigt, bra initiativ, tror detta kan uppskattas.
Ett bra verktyg för just MySQL är MySQL Workbench
Det enda verktyg som du behöver för att administrera din MySQL server.
Lite vad man kan göra
Ett tips skulle va om du gick igenom hur man använder Workbench. Kommer ihåg när de kom och jag förstod inte mycket utav det. Tyckte och tycker fortfarande bättre om MySQL Administrator bara för att jag inte förstår Workbench.
För övrigt, bra initiativ, tror detta kan uppskattas.
Bra förslag. Funderat på att göra en lathund med bilder, alternativt ljudlösa screencasts, där jag går igenom databasmodellering och Query delen, emd enklare exempel.
För mig skulle det räcka med en enkel "Kom igång" guid då jag inte förstår ett jota utav Workbench.
Rätta mig om jag har fel, men det känns som det är som Access och Microsoft SQL Server Management, eller?
Rätta mig om jag har fel, men det känns som det är som Access och Microsoft SQL Server Management, eller?
Något åt det hållet. Fast MS Access vet jag inte. Det är en Databas manager för MySQL.
Förut hade MySQL separata verktyg för allt, som MySQL Administrator, MySQL Query Browser osv.
Nu har dom slagit ihop allt till ett enda verktyg, vilket jag tycker är bra.
Denna tråden skall ögonen kika igenom med jämnamellanrum.
Har grundläggande kunskap i sql, tillräckligt för att få saker att fungera men går saker att göra smidigare, eller ännu bättre, effektivare(dvs snabbare) så är ju det toppen! Skall försöka förstå mig på redan postad info i hopp om att jag lär mig något.
Kanon initiativ !
Edit: Försöker klura ut ler mer specifikt vad som händer i koden ovan (teams) och undrar om du kanske skulle kunna förklara lite mer varför du gör som du gör, och om möjligt, varför man gör så? =)
Denna tråden skall ögonen kika igenom med jämnamellanrum.
Har grundläggande kunskap i sql, tillräckligt för att få saker att fungera men går saker att göra smidigare, eller ännu bättre, effektivare(dvs snabbare) så är ju det toppen! Skall försöka förstå mig på redan postad info i hopp om att jag lär mig något.
Kanon initiativ !
Edit: Försöker klura ut ler mer specifikt vad som händer i koden ovan (teams) och undrar om du kanske skulle kunna förklara lite mer varför du gör som du gör, och om möjligt, varför man gör så? =)
Ska skriva en längre förklaring av lösningen.
Vad är det du inte förstår med teams tabellen? är det att den används två gånger?
Tänkte förklara lite, hur sqlen fungerar. Har döpt om alias
för tabeller för att göra det lättare att förstå vad som görs.
id, team, suffix
1, Djurgården, IF
2, Timrå, IK
id, home, away
1,1,2
2,2,1
SELECT
Game.id AS 'Game ID',
CONCAT_WS(' - ',
CONCAT_WS(' ', Home.team, Home.suffix),
CONCAT_WS(' ', Away.team, Away.suffix)
) 'Game'
FROM
teams Home
JOIN
games Game
ON
(Home.id = Game.home)
JOIN
teams Away
ON
(Away.id = Game.away);
SELECT u.name, s.title 'skill' FROM rkj_users u JOIN rkj_users_skills us ON (u.id = us.user_id) JOIN rkj_skills s ON (s.id = us.skill_id)
SELECT u.name, GROUP_CONCAT(s.title, SEPARATOR ', ') 'skills' FROM rkj_users u JOIN rkj_users_skills us ON (u.id = us.user_id) JOIN rkj_skills s ON (s.id = us.skill_id) GROUP BY u.id
Räkna ut antal inlägg användare har gjort sedan ett visst datum,
och sortera användare efter antal inlägg.
Klicka här för se sqlfrågan
Frågan hämtar information från två tabeller med en join.
Inga konstigheter med det. För att få ut poster från ett datum längre tillbaka
använder man antingen SUBDATE() eller INTERVAL.
Det är denna rad som ser till att hämta alla poster från 7 dagar bakåt.
p.post_date >= DATE(NOW() - INTERVAL 7 DAY)

Användaren "Bar Foo" har 2 inlägg, men det är bara ett som ligger innanför datumintervallet, och därför
visas det bara totalt "1" inlägg från användaren. Lika med "Foo Bar" som har gjort 3 inlägg, men bara
2 av dessa är gjorda inom datumintervallet.