This is an old revision of the document!


Databaser + enkla JOIN

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 när ni är klar “commitar” och “pushar” ni filen.

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. Skriv en fråga som visar hur många inlägg användaren med user_id 17 har gjort (använd count).

4. Skriv en fråga som visar hur många inlägg användaren med login eb0027 har (använd count).

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. Sidan ska heta mysql3.php och ligga i mappen web under wesweb.