This topic is locked

Problem with Select / Query

11/14/2007 3:21:11 PM
PHPRunner General questions
Z
zephyr325 author

Hello - I've got the latest/greatest version of PHP running, running on Apache using MySQL 5. I'm trying to build my first application with a relatively intense query and running into a problem. Here's the query:

select meets.name "Meet Name", event.sex "M/F", event.distance "Distance", event.event "Stroke", swimmer.name "Name", swimmer2.name "Name 2", swimmer3.Name "Name 3", swimmer4.name "Name 4", results.seconds "Seconds", results.points "Points"

from results, meets, event, swimmer , swimmer swimmer2, swimmer swimmer3, swimmer swimmer4
where results.meet_id = meets.ID and event.event_number = results.event_id and swimmer.id = results.Swimmer_ID1 and results.Swimmer_ID2 = swimmer2.id and results.Swimmer_ID3 = swimmer3.id and results.Swimmer_ID4 = swimmer4.id
union
select meets.name "Meet Name", event.sex "M/F", event.distance "Distance", event.event "Stroke", swimmer.name "Name", "", "", "", results.seconds "Seconds", results.points "Points"
from results, meets, event, swimmer
where results.meet_id = meets.ID and event.event_number = results.event_id and swimmer.id = results.Swimmer_ID1

It builds the pages and puts it out on my website, but I get an error that states "The used SELECT statements have a different number of columns". The query it's trying to execute looks right:

select meets.name "Meet Name", event.sex "M/F", event.distance "Distance", event.event "Stroke", swimmer.name "Name", swimmer2.name "Name 2", swimmer3.Name "Name 3", swimmer4.name "Name 4", results.seconds "Seconds", results.points "Points" from results, meets, event, swimmer , swimmer swimmer2, swimmer swimmer3, swimmer swimmer4 where results.meet_id = meets.ID and event.event_number = results.event_id and swimmer.id = results.Swimmer_ID1 and results.Swimmer_ID2 = swimmer2.id and results.Swimmer_ID3 = swimmer3.id and results.Swimmer_ID4 = swimmer4.id union select meets.name "Meet Name", event.sex "M/F", event.distance "Distance", event.event "Stroke", swimmer.name "Name", null, null, null, results.seconds "Seconds", results.points "Points" from results, meets, event, swimmer where results.meet_id = meets.ID and event.event_number = results.event_id and swimmer.id = results.Swimmer_ID1


I've verified the number of columns is the same on both sides of the union (10). If I drop everything from the query starting with the "union" clause, it works correctly.
Any thoughts?

Z
zephyr325 author 11/14/2007

Support gave me an answer - the best thing to do for a complex query like this is to create a view and then report off of that.