Matt V
Matt V

Reputation: 53

MySql query - find whats missing in db

I'm having trouble coming up with a query to determine what records are missing from my mysql database.

I don't know how to loop through to find whats missing from a structured listing.

I have a database used as a locations map for an online game I play, field structure is as follows:

Region | Province | City | PlayerInfo

Region/province/city are all numeric values. Region values are 1-30 and Province values are 1-500. These are fixed. My database is to list all the cities a player might have. A given province could have up to 20 cities, or none. When there are no cities in a province, I create a record in the db with blank city and playerinfo values.

For example:

R | P | C | PI
1 | 1 | 3 | Name1
1 | 1 | 7 | Name2
1 | 2 | 4 | Name3
1 | 3 |   |
1 | 4 | 1 | Name2
1 | 4 | 4 | Name4
1 | 6 | 3 | Name5
etc

What I'm trying to do is find what region/province combinations are missing. In the sample data here, I would want to know R:1 P:5.

Is there a way to do this? Let me know if I can provide any more information

Upvotes: 3

Views: 257

Answers (1)

Dalen
Dalen

Reputation: 9006

Assuming you have 2 tables (province and region) containing data about province and region (if not it is easy to create them with just numeric values as stated on the question):

SELECT comb.reg AS R,comb.pro AS P FROM
   your_table_above t
RIGHT JOIN
(
   SELECT region.id AS reg, province.id AS pro
   FROM region
   JOIN province
   ORDER BY region.id
) AS comb
ON t.R = comb.reg AND t.P = comb.pro
WHERE t.R IS NULL AND t.P IS NULL

this query should give you back all combinations which are not in the table you drawn above.

EDIT

this is how looks the query after the comments below:

SELECT comb.reg AS R,comb.pro AS P FROM
 loc_table t
RIGHT JOIN
(
   SELECT region.id AS reg, province.id AS pro
   FROM region
   JOIN province
   ORDER BY region.id
) AS comb
ON t.Region = comb.reg AND t.Province = comb.pro
WHERE t.Region IS NULL AND t.Province IS NULL

Upvotes: 1

Related Questions