Hej!
Jag håller på att skapa en sida och försöker då ta fram lite data från database.
Jag har tre tabeller med dessa kolumner:
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| category_id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| category_name | varchar(255) | YES | | | |
+---------------+------------------+------+-----+---------+----------------+
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| restaurant_id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| name | text | NO | | NULL | |
| address | text | YES | | NULL | |
| mapslink | varchar(255) | YES | | NULL | |
| website | varchar(255) | YES | | NULL | |
| name_escaped | varchar(255) | YES | | NULL | |
| phone | varchar(25) | YES | | NULL | |
| category_id | int(11) | YES | | NULL | |
+---------------+------------------+------+-----+---------+----------------+
+---------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------------+------+-----+---------+----------------+
| category_id | int(11) unsigned | NO | PRI | NULL | auto_increment |
| category_name | varchar(255) | YES | | | |
+---------------+------------------+------+-----+---------+----------------+
Det jag försöker göra är att visa data för varje restaurang (restaurant_id)
Det jag har ränknat ut att jag behöver är:
restaurants.name, restaurants.name_escaped, restaurants.address, restaurants.mapslink, restaurants.phone
category.category_name
avg(comments.rating), count(comments.rating)
Jag har filat på denna queryn i ett antal timmar nu och lyckades nästan. Det som fortfarande är fel är att den ger tillbaka samma rating och num_rating till alla restauranger.
Den query jag använde var:
SELECT restaurant_id, name, name_escaped, address, mapslink, phone,
( SELECT avg(rating) FROM comments) as rating,
( SELECT count(rating) FROM comments ) as num_ratings, category.category_name
FROM restaurants
LEFT JOIN category
ON restaurants.category_id=category.category_id
Jag har testa lite med GROUP BY för det delar upp rating och num_rating men det ger bara felmeddelanden när man slår ihop allt.
Hoppas någon kan hjälpa mig :)
Tack på förhand!