Differences

This shows you the differences between two versions of the page.

Link to this comparison view

birds_databaser [2019-10-24 21:41]
Joakim Forsgren
birds_databaser [2022-07-18 13:20]
Line 1: Line 1:
-====== SELECT frågor med join ====== 
-Nu skall nu använda min databas **jf_select**. (login: jf_select, passwd: jf_select) 
-När det står tips så är det något nytt, det räcker inte enbart med det som står som tips. Ni kommer behöva läsa i manualen för att lyckas skulle jag tro :-)\\ 
-**OBS!** Ni får bara ställa en fråga för att ta fram ert svar, spara de SQL-frågor ni ställer i en textfil (mysql4.txt). När ni är klar “commitar” och “pushar” ni filen.\\ 
-Följande tabeller finns i databasen jf_select (i princip lika i varje fall…) \\ 
-{{:selectuppgifter_html_m3687461c.png|}} 
-<code SQL># ev Måste ni först ställa om teckentabellen om du jobbar via terminal 
-SET NAMES utf8</code> 
  
-  - Visa alla fåglar 
-  - Skriv en fråga som ger en rad till svar och det är antalet fåglar, typ som nedan.<code> 
-+-----+ 
-| N   | 
-+-----+ 
-| 475 | 
-+-----+ 
-</code> 
-  - Visa alla fåglar, sorterat på namn. 
-  - Visa alla fåglar, sorterat på artlistan (alltså efter Sort). 
-  - Visa de 10 första fåglarna, sorterat på artlistan (alltså efter Sort). 
-  - Visa alla fåglar som har **trast** i sitt namn (18 st). 
-  - Visa alla fåglar som börjar på **stor** (8 st). 
-  - Visa alla fåglar som slutar på **ett** (6 st). 
-  - Visa alla kryss som användaren med UserID 3 har, jag vill se fågelnamnen. (Tips INNER JOIN) 
-  - Visa alla fåglar som användaren med login = JF har kryssat Tips: INNER JOIN x 2 
-  - Skriv en fråga som tar fram hur många kryss användaren med UserID=1 har av varje fågel och man får dem sorterade efter antal. **Tips:** COUNT, GROUP BY.Exempel på svar:<code> 
-+-----------------------+-------+ 
-| Name                  | Antal | 
-+-----------------------+-------+ 
-| Knipa                    10 | 
-| Grå kråka                 6 | 
-| Knölsvan              |     6 | 
-| Sångsvan              |     5 | 
-| Sothöna                   5 | 
-| Blåmes                |     4 | 
-| Skata                     4 | 
-| Talgoxe                   4 | 
-| Sädesärla                 4 | 
-| Gräsand                   4 | 
-| Skrattmås                 4 | 
-| Fiskmås                   4 | 
-osv... 
-</code> 
-  - Gör om frågan så att man bara ser de fåglar som JF har fler än 4 observationer av. 
-  - Gör om frågan så att man bara ser de fåglar som JF har 1 observation av.<code> 
-Nu börjar det bli svårt...</code> 
-  - Skriv en fråga som tar fram hur många olika fågelarter varje användare har. Tips: COUNT (DISTINCT… Ex på lämpligt svar:<code> 
-+-----------+-----------------+-------+ 
-| FirstName | LastName        | Antal | 
-+-----------+-----------------+-------+ 
-| Jörgen    | Wiklund           234 | 
-| Anna      | Lindgren        |   217 | 
-| Jan       | Schützer        |   213 | 
-| Liam      | Martin          |   192 | 
-| Johanna   | Martin          |   176 | 
-| Helen     | Forsgren        |   171 | 
-| Joakim    | Forsgren        |   171 | 
-| Anita     | Bäckström         169 | 
-| Hasse     | Bäckström         159 | 
-| Fritz     | Forsgren        |   154 | 
-| Edvin     | Forsgren        |   142 | 
-| Ulla      | Forsgren        |   141 | 
-| Kristina  | Wiklund           131 | 
-| Nina      | Ödmark          |   123 | 
-osv... 
-</code> 
-  - Skriv en fråga som visar hur många gånger olika arter har sets från någon tomt. (Plot = 1) sorterat efter vilken fågel som setts av flest personer. (Fågeln får bara räknas en gång per person) Ex på lämpligt svar:<code> 
-+-----------------------+-------+ 
-| Name                  | Antal | 
-+-----------------------+-------+ 
-| Skata                    30 | 
-| Blåmes                |    28 | 
-| Talgoxe                  28 | 
-| Björktrast            |    26 | 
-| Grå kråka                26 | 
-| Bofink                |    26 | 
-| Domherre              |    26 | 
-| Grönfink              |    24 | 
-| Pilfink                  23 | 
-| Större hackspett      |    22 | 
-| Sädesärla                22 | 
-| Rödhake                  22 | 
-| Koltrast              |    20 | 
-| Gulsparv              |    20 | 
-osv.. 
-</code> 
-  - Skriv en fråga som visar 10 i topplistan för år 2004. (Flest sedda Fågelarter per person) Ex på lämpligt svar:<code> 
-+--------------------+-------+ 
-| Namn               | Antal | 
-+--------------------+-------+ 
-| Jörgen Wiklund       223 | 
-| Jan Schützer         200 | 
-| Liam Martin        |   154 | 
-| Anita Bäckström    |   148 | 
-| Joakim Forsgren    |   141 | 
-| Helen Forsgren       140 | 
-| Hasse Bäckström    |   139 | 
-| Johanna Martin       130 | 
-| Kristina Wiklund     123 | 
-| Fritz Forsgren       112 | 
-+--------------------+-------+ 
-</code> 
-  - Skulle du redan ha kommit hit så börja göra en sida som visar relevant data från dessa tabeller. Intressanta vyer att visa kan vara "topplista", "toppplista per år", "alla kryss", "en användares alla kryss", "vilka som har kryssat en fågel". Man kan ha massa länkar vid tex topplistan kan kan klicka på en användare och få se alla fåglar som denna användare har kryssat och klickar man sen på en fågel kan man se alla som har sett denna fågel... osv. Gör så mycket du hinner... \\ Man bör komma åt ditt resultat från ~login/wesweb/web/birds.php 
- 
- 
-<php> 
-/* 
-<code SQL> 
-1. 
-SELECT * FROM Birds; 
- 
-9. 
-SELECT * FROM Observations  
-WHERE UserID=3; 
- 
-10. 
-SELECT * FROM Users INNER JOIN Observations USING(UserID) 
-WHERE Login='JF'; 
- 
-11. 
-SELECT Name,COUNT(UserID) as Antal  
-FROM Birds INNER JOIN Observations USING(BirdID)  
-WHERE UserID=1  
-GROUP BY BirdID  
-ORDER BY Antal DESC; 
- 
-12. 
-SELECT Name,COUNT(UserID) as Antal  FROM Birds INNER JOIN Observations USING(BirdID)  WHERE UserID=3  GROUP BY BirdID  having Antal>4 ORDER BY Antal DESC; 
- 
-14. 
-SELECT CONCAT(FirstName,' ',LastName) as Name,COUNT(DISTINCT BirdID) as Antal  
-FROM Users INNER JOIN Observations USING(UserID)  
-GROUP BY UserID  
-ORDER BY Antal DESC; 
- 
-15. 
-SELECT Name,COUNT(DISTINCT UserID) as Antal  
-FROM Birds INNER JOIN Observations USING(BirdID)  
-WHERE Plot=1  
-GROUP BY BirdID ORDER BY Antal DESC; 
- 
-16. 
-SELECT CONCAT(FirstName,' ',LastName) as Name,COUNT(DISTINCT BirdID) as Antal  
-FROM Users INNER JOIN Observations USING(UserID)  
-WHERE YEAR(Date)=2004  
-GROUP BY UserID  
-ORDER BY Antal DESC; 
-</code> 
- 
-*/ 
-</php>