Tjipp.
Har följande tre tabeller (har tagit bort en massa kolumner i spp_users för enkelhetens skull). Jag vill få ut t.ex. för- och efternamn i spp_users tillsammans med namnet på gatan de bor på samt staden de bor i . Att de ligger i olika tabeller beror på att det är en förteckning över samtliga gatnamn och städer i landet, men låt oss skippa den diskusisonen för tillfället.
Jag vill dessutom att innehållet i spp_users, d.v.s. namnet ska visas även om ingen stad eller gata är angiven, d.v.s. när street_id är noll eller city_id är noll eller null.
Jag har kommit en bit på vägen genom att få ut två SQL-satser som fungerar precis som jag vill att de ska, så att rätt information skrivs ut på det sätt jag vill.
Det jag inte lyckas klura ut är hur jag får allt till en fråga. Gissningsvis ska jag ha två right joins i frågan men jag har gått bet på att formulera frågan.
Mina två SQL-frågor finns bifogade under tabellerna. Hoppas att ni kan hjälpa mig
/M
mysql> describe spp_users;
+--------------------+-------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------------+-------------------+------+-----+---------+----------------+
| id | int(10) unsigned | | PRI | NULL | auto_increment |
| active | enum('y','n') | YES | | y | |
| first_name | varchar(50) | YES | | NULL | |
| last_name | varchar(50) | YES | | NULL | |
| street_id | int(10) unsigned | YES | MUL | 0 | |
| zipcode | varchar(12) | YES | | NULL | |
| street_no | varchar(12) | YES | | NULL | |
| city_id | int(10) unsigned | YES | MUL | 0 | |
+--------------------+-------------------+------+-----+---------+----------------+
26 rows in set (0.00 sec)
mysql> describe spp_cities;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | | PRI | NULL | auto_increment |
| name | varchar(255) | YES | MUL | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> describe spp_streets;
+-------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | | PRI | NULL | auto_increment |
| name | varchar(255) | YES | MUL | NULL | |
+-------+------------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
SQL-frågor:
SELECT distinct (spp_users.id), spp_users.first_name, spp_users.last_name, spp_streets.name AS street_name FROM spp_users, spp_streets RIGHT JOIN spp_users AS boing ON (spp_users.street_id = spp_streets.id) WHERE spp_users.active='y' limit 40;
SELECT distinct (spp_users.id), spp_users.first_name, spp_users.last_name, spp_cities.name AS city_name FROM spp_users, spp_cities RIGHT JOIN spp_users AS boing ON (spp_users.city_id = spp_cities.id) WHERE spp_users.active='y' limit 40;