J'ai essayé d'utiliser une table temporaire en tant que porte-résultats intermédiaire pour une instruction SELECT. Le problème est cependant que je ne peux pas accéder à la table temporaire plusieurs fois dans d'autres requêtes, ce qui, je l'espérais, serait possible, c'est-à-dire rendrait la table temporaire inutile.Accès multiple à une table temporaire dans MySQL
Existe-t-il une alternative aux tables temporaires dans MySQL qui me permet d'extraire mon instruction SQL.
Je ne peux pas utiliser les procédures de stockage (je ne peux pas y accéder à partir de la version web-framework utilisée dans l'entreprise) et je ne souhaite pas utiliser de curseur.
Edit:
Eh bien mon code ressemble un peu à ceci:
création de la table Temp:
CREATE TEMPORARY TABLE dates_with_entries (
seq INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
datum VARCHAR(32)
);
INSERT INTO dates_with_entries (datum) SELECT datum AS Datum from project_times
WHERE user_id = 20 GROUP BY datum ORDER BY datum desc LIMIT 13;
ensuite le code où j'utilise ma table temp ressemble un peu comme ça (je simpled il jusqu'au problème que j'ai ..)
SELECT
...
FROM (SELECT entrie_date AS datum FROM dates_with_entries) AS sub_result
INNER JOIN project_times
ON sub_result.datum = project_times.datum AND project_times.user_id = 20
LEFT JOIN works AS w ON project_times.work_id = w.id
LEFT JOIN sub_projects AS sp ON sp.id = w.sub_project_id
LEFT JOIN projects AS p ON p.id = sp.project_id
GROUP BY datum
UNION(
SELECT
..
FROM (SELECT entrie_date AS datum FROM dates_with_entries) AS sub_result
INNER JOIN project_times AS pt ON pt.datum = sub_result.datum
INNER JOIN works AS w on w.id = pt.work_id
INNER JOIN sub_projects AS sp on w.sub_project_id = sp.id
INNER JOIN projects AS p ON sp.project_id = p.id
WHERE pt.user_id = 20
);
Les chiffres seront affichés plus tard remplacé par ruby, ceci est seulement pour tester l'instruction SQL.
Montrer quelques exemples de SQL pour la façon dont vous créez et utilisez la table temporaire. –