This is an old revision of the document!


Databaser + enkla JOIN

# Eventuellt måste man köra detta kommando för att få GROUP BY att fungera.
# Får ni felet ...incompatible WITH sql_mode=only_full_group_by... kör kommandot nedan
SET sql_mode=(SELECT REPLACE(@@sql_mode, 'ONLY_FULL_GROUP_BY', ''));

Gå igenom inner join, left/right join, group by, count, sub select och having

# ex från genomgång
select join_users.*, join_items.date, count(join_items.user_id) as antal 
from join_users 
left join join_items 
on join_users.user_id=join_items.user_id 
where join_users.user_id > 25 
group by join_users.user_id 
having antal=0 
order by antal desc;

Jobba i terminal och skriv dina svar i en fil du kallar mysql3.txt. Lägg filen i mappen mysql och skicka in den till bitbucket när du är klar.

Det finns två tabeller i databasen jf_select som ser ut som nedan

mysql> desc join_users;
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| user_id      | int(11)      | NO   | PRI | NULL    | auto_increment |
| login        | varchar(255) | NO   |     | NULL    |                |
| name         | varchar(255) | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

mysql> desc join_items;
+--------------+----------+------+-----+---------+----------------+
| Field        | Type     | Null | Key | Default | Extra          |
+--------------+----------+------+-----+---------+----------------+
| item_id      | int(11)  | NO   | PRI | NULL    | auto_increment |
| user_id      | int(11)  | NO   | MUL | NULL    |                |
| item         | text     | NO   |     | NULL    |                |
| date         | datetime | NO   |     | NULL    |                |
+--------------+----------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
Din uppgift är att skriva några SQL-frågor på dessa två tabeller

1. Visa alla inlägg som användaren med user_id 17 har gjort?

2. Visa alla inlägg som användaren med login eb0027 har gjort?

3. Hur många inlägg har användaren med user_id 17?

4. Hur många inlägg har användaren med login eb0027?

5. Skriv en fråga som ger följande svarstabell:

+--------+-------------------------+-------+
| login  | Name                    | items |
+--------+-------------------------+-------+
| ka2211 | Khaled Al Moulla        |     0 |
| sh2998 | Simon Hägglund          |     0 |
| gn8265 | Gabriel Backman Norgren |     0 |
| jl0021 | Johan Lindström         |     0 |
| aa0024 | Adam Åström             |     0 |
| js0016 | Jonathan Söderlind      |     0 |
| dj0006 | Dennis Johansson        |     0 |
| av0018 | Albin von Ahn           |     0 |
| ro0002 | Robin Olsson            |     1 |
| lp0001 | Liza Pettersson         |     1 |
| an0050 | Anton Nilsson (te14)    |     1 |
| oa1675 | Oskar Andersson         |     2 |
| jw2123 | Joakim Wiklund          |     2 |
| ab0030 | Adrian Byström          |     2 |
| lv2726 | Leo Vedberg             |     3 |
| ae0042 | Alexander Eriksson      |     3 |
| pn9149 | Pelle Nordström         |     3 |
| vs0014 | Viktor Södersten        |     3 |
| mp0008 | Markus Pettersson       |     3 |
| ee2753 | Erik Elfving            |     3 |
| mj0012 | Markus Johansson        |     4 |
| ms0005 | Martin Sjölund          |     4 |
| hs0019 | Henrik Svensson         |     5 |
| jl5733 | Jesper Lindberg         |     5 |
| ab0043 | Alexander Bäckman       |     5 |
| as0042 | Andreas Svensson        |     6 |
| js0015 | Jon Sellgren            |     7 |
| ss0032 | Samuel Sjöström         |     7 |
| jv0016 | Johan Vikström          |     7 |
| jd0007 | Jacob Danielsson        |     8 |
| an0054 | Alexander Näslund       |     8 |
| mp0013 | Mattias Persson         |     8 |
| et0003 | Elias Tegström          |     8 |
| as0044 | André Sjöström          |     8 |
| af0018 | Alva Forslund           |     9 |
| jj0020 | Jim Johansson           |     9 |
| dj9428 | David Gyll Jonsson      |     9 |
| jg0015 | Josef Gerhardsson       |    10 |
| ee7874 | Emil Eriksson           |    10 |
| ef5135 | Edvin Forsgren          |    10 |
| wn0001 | William Norberg         |    10 |
| ya0001 | Yasir Al-Latifi         |    10 |
| rg4999 | Rasmus Gustafsson       |    10 |
| jl0073 | Jim Lundin              |    10 |
| jg0017 | Julius Gustafsson       |    11 |
| dn0007 | Didrik Nilsson          |    11 |
| js8177 | Josefin Sundström       |    11 |
| js0523 | Johan Skarin            |    11 |
| so0013 | Samuel Olofsson         |    11 |
| fo0003 | Fredrik Öberg           |    11 |
| vm8563 | Victor Möller           |    12 |
| eb0027 | Emelie Boström          |    12 |
| jr0004 | Joel Rantala            |    12 |
| dm2156 | Darin Muhieddine        |    12 |
+--------+-------------------------+-------+

6. Skriv en fråga som ger följande svarstabell:

+--------+-------------------------+-------+
| login  | Name                    | items |
+--------+-------------------------+-------+
| vm8563 | Victor Möller           |    12 |
| eb0027 | Emelie Boström          |    12 |
| jr0004 | Joel Rantala            |    12 |
| dm2156 | Darin Muhieddine        |    12 |
| jg0017 | Julius Gustafsson       |    11 |
| dn0007 | Didrik Nilsson          |    11 |
| js8177 | Josefin Sundström       |    11 |
| js0523 | Johan Skarin            |    11 |
| so0013 | Samuel Olofsson         |    11 |
| fo0003 | Fredrik Öberg           |    11 |
| jg0015 | Josef Gerhardsson       |    10 |
| ee7874 | Emil Eriksson           |    10 |
| ef5135 | Edvin Forsgren          |    10 |
| wn0001 | William Norberg         |    10 |
| ya0001 | Yasir Al-Latifi         |    10 |
| rg4999 | Rasmus Gustafsson       |    10 |
| jl0073 | Jim Lundin              |    10 |
| af0018 | Alva Forslund           |     9 |
| jj0020 | Jim Johansson           |     9 |
| dj9428 | David Gyll Jonsson      |     9 |
| jd0007 | Jacob Danielsson        |     8 |
| an0054 | Alexander Näslund       |     8 |
| mp0013 | Mattias Persson         |     8 |
| et0003 | Elias Tegström          |     8 |
| as0044 | André Sjöström          |     8 |
| js0015 | Jon Sellgren            |     7 |
| ss0032 | Samuel Sjöström         |     7 |
| jv0016 | Johan Vikström          |     7 |
| as0042 | Andreas Svensson        |     6 |
| hs0019 | Henrik Svensson         |     5 |
| jl5733 | Jesper Lindberg         |     5 |
| ab0043 | Alexander Bäckman       |     5 |
| mj0012 | Markus Johansson        |     4 |
| ms0005 | Martin Sjölund          |     4 |
| lv2726 | Leo Vedberg             |     3 |
| ae0042 | Alexander Eriksson      |     3 |
| pn9149 | Pelle Nordström         |     3 |
| vs0014 | Viktor Södersten        |     3 |
| mp0008 | Markus Pettersson       |     3 |
| ee2753 | Erik Elfving            |     3 |
| oa1675 | Oskar Andersson         |     2 |
| jw2123 | Joakim Wiklund          |     2 |
| ab0030 | Adrian Byström          |     2 |
| ro0002 | Robin Olsson            |     1 |
| lp0001 | Liza Pettersson         |     1 |
| an0050 | Anton Nilsson (te14)    |     1 |
| ka2211 | Khaled Al Moulla        |     0 |
| sh2998 | Simon Hägglund          |     0 |
| gn8265 | Gabriel Backman Norgren |     0 |
| jl0021 | Johan Lindström         |     0 |
| aa0024 | Adam Åström             |     0 |
| js0016 | Jonathan Söderlind      |     0 |
| dj0006 | Dennis Johansson        |     0 |
| av0018 | Albin von Ahn           |     0 |
+--------+-------------------------+-------+

7. Skriv en fråga som ger följande svarstabell, alltså bara de som inte har gjort något inlägg:

+--------+-------------------------+-------+
| login  | Name                    | items |
+--------+-------------------------+-------+
| dj0006 | Dennis Johansson        |     0 |
| ka2211 | Khaled Al Moulla        |     0 |
| gn8265 | Gabriel Backman Norgren |     0 |
| aa0024 | Adam Åström             |     0 |
| av0018 | Albin von Ahn           |     0 |
| sh2998 | Simon Hägglund          |     0 |
| jl0021 | Johan Lindström         |     0 |
| js0016 | Jonathan Söderlind      |     0 |
+--------+-------------------------+-------+

8. Gör en webbsida som visar alla användare, man skall kunna se hur många inlägg varje användare har och man skall kunna klicka på användare eller siffran för antal inlägg och då skall man se en sida som visar alla inlägg för den användaren + att det skall stå vilken användare det är man tittar på. Det skall också finnas en länk tillbaka till sidan som visar alla inlägg. Sidorna skall vara validerade och se trevlig ut.