I would like to avoid using real tables as a work-around. I am trying to join two tables and get unique values for the column I'm calling unique_values_needed
, while also prioritizing the value 11 when it is present in duplicate real_secondary_table_primary_key
.
Here is the code (it works in phpMyAdmin, but not in PHP):
CREATE TEMPORARY TABLE IF NOT EXISTS temporary_table_1 AS (SELECT real_main_table.*, real_secondary_table.real_secondary_table_primary_key FROM real_main_table LEFT JOIN real_secondary_table ON real_secondary_table.real_main_table_primary_key = real_main_table.real_main_table_primary_key ORDER BY real_main_table.date DESC); CREATE TEMPORARY TABLE IF NOT EXISTS temporary_table_2 AS (SELECT real_main_table.*, real_secondary_table.real_secondary_table_primary_key FROM real_main_table LEFT JOIN real_secondary_table ON real_secondary_table.real_main_table_primary_key = real_main_table.real_main_table_primary_key ORDER BY real_main_table.date DESC); UPDATE temporary_table_1 t1, temporary_table_2 t2 SET t1.real_secondary_table_primary_key = t2.real_secondary_table_primary_key WHERE t1.real_main_table_primary_key = t2.real_main_table_primary_key AND t1.real_secondary_table_primary_key 11 AND t2.real_secondary_table_primary_key = 11; SELECT * FROM temporary_table_1 GROUP BY unique_values_needed ORDER BY temporary_table_1.date DESC;
I have also tried the following (again, it works in phpMyAdmin, but still not in PHP):
CREATE TEMPORARY TABLE IF NOT EXISTS temporary_table_1 AS (SELECT real_main_table.*, real_secondary_table.real_secondary_table_primary_key FROM real_main_table LEFT JOIN real_secondary_table ON real_secondary_table.real_main_table_primary_key = real_main_table.real_main_table_primary_key ORDER BY real_main_table.date DESC); UPDATE temporary_table_1 t1, ( SELECT real_main_table.*, real_secondary_table.real_secondary_table_primary_key FROM real_main_table LEFT JOIN real_secondary_table ON real_secondary_table.real_main_table_primary_key = real_main_table.real_main_table_primary_key ORDER BY real_main_table.date DESC) t2 SET t1.real_secondary_table_primary_key = t2.real_secondary_table_primary_key WHERE t1.real_main_table_primary_key = t2.real_main_table_primary_key AND t1.real_secondary_table_primary_key 11 AND t2.real_secondary_table_primary_key = 11; SELECT * FROM temporary_table_1 GROUP BY unique_values_needed ORDER BY temporary_table_1.date DESC;
When I checked using mysql_query($query) or die(mysql_error())
, the error is supposedly either when creating the second temporary table (in the first code example), or in the UPDATE
when using (SELECT ...) t2
(in the second code example).