mysql - http://www.sql-ex.ru exercise #39 returns right result but there is a mistake in the query -


were mistake in solution?

the task is
define ships "survived future battles"; being damaged in 1 battle, took part in another.

description of db
database of naval ships took part in world war ii under consideration. database has following relations: classes(class, type, country, numguns, bore, displacement) ships(name, class, launched) battles(name, date) outcomes(ship, battle, result) ships in classes arranged single project. class assigned name of first ship in class under consideration (head ship); otherwise, class name not coincide ship name in database. classes relation includes class name, type (bb battle ship, or bc battle cruiser), country ship built, number of main guns, gun caliber (diameter of gun barrel, in inches), , displacement (weight in tons). ships relation includes ship name, class name, , launch year. battles relation covers name , date of battle ships participated; while result of participation in battle (sunk, damaged, or unharmed - ok) in outcomes relation. notes: 1) outcomes relation may include ships not included in ships relation. 2) sunk ship can not participate in battles after that.

my solution:

select a.ship (select distinct ship, date outcomes join battles on outcomes.battle=battles.name result = 'damaged') join (select distinct ship, date outcomes join battles on outcomes.battle=battles.name result != 'damaged') b  on a.ship = b.ship a.date < b.date 

result: query returned correct dataset on first (available) database, returned incorrect dataset on second checking database. * wrong number of records (less 2)

solved!

select distinct kk.ship (select ship,date outcomes oo,battles bb oo.battle=bb.name) tt  inner join  (select ship,date damagedate outcomes oo,battles bb result='damaged' , oo.battle=bb.name) kk  on tt.ship=kk.ship , tt.date>kk.damagedate 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -