I’ve to execute a complex query, selecting several columns from 7-8 tables.
We don’t want to write that query in programming language (PHP – Symfony 1.4/Propel 1.4 in our case) but to create a view or stored procedure to have very simple select query for developers. I’m confused what will be better approach.
We need query in following format:
SET @PlayerId = 1;
SELECT CASE WHEN mat.player1id = @PlayerId THEN mat.player2id ELSE mat.player1id END as opponent
/*plus many other columns*/
FROM `wzo_matches` as mat /*plus few other tables*/
WHERE (mat.player1id =@PlayerId OR mat.player2id=@PlayerId)
/*plus other join conditions*/
Problem with view is, SET @PlayerId=xx statement. We don’t know player id in advance but will be passed through PHP. I hope this is the reason to rule out views; is there any workaround for that?
Other option will be stored procedure. Only issue with that is, it will create a new view for every query so operation will be very heavy for DB.
Can someone suggest best approach so that developers can get required data from above query without writing above complex query in PHP. (Obviously through SP or view & simple select query from there)
Based on reply of Can I create view with parameter in MySQL?, My issue is fixed with following queries: