Dopo avere programmato una applicazione php/mysql in locale, una parte della quale usa una interrogazione tra due tabelle, utilizzando 3 subquery, mi sono accorto che nel server remoto questa non funziona per via della versione 4 installata sul server al quale non posso accedere per installare una versione del DB più recente.
Passo a spiegare quello che l'applicazione deve fare, quindi indicherò il codice.
Ho una tabella di anagrafica di etichette discografiche, distribuzioni, locali, agenzie di promozione.
Ho un'altra tabella all'interno della quale vado a salvare i dati dei lavori discografici che queste entità inviano ad una redazione, al fine di riceverne una recensione.
Una parte del software sarà incentrata sull'inserimento dei nuovi lavori discografici da esaminare.
L'intenzione è quella di avere una form che mostra la lista di possibili etichette, distribuzioni, agenzie eccetera, al fine di velocizzare il processo di inserimento di una recensione da parte dei redattori.
Fin qui tutto bene, e l'inserimento funziona perfettamente.
Alcuni lavori discografici possono però avere più di una etichetta.
Nel salvare i dati nella tabella delle recensioni non ho problemi in quanto per ogni etichetta c'è una colonna che contiene un riferimento numerico (all'ID pescato dall'anagrafica).
Nella query che io avevo scritto si trovavano 3 subquery per andare a leggere il nome dell'etichetta (nell'anagrafica) in base al riferimento numerico della tabella recensione.
Nel compilare la query in maniera retro-compatibile, però, non riesco a capire come impostare più di una JOIN.
È per questo che chiedo il vostro aiuto.
Di seguito la struttura delle tabelle (semplificata per l'occasione):
codice:
#### TABELLA ANAGRAFICA ####
+-------------------+---------------------+
| Field | Type |
+-------------------+---------------------+
| id | int(6) unsigned |
| data_inserimento | timestamp |
| tipo | tinyint(3) unsigned |
| nome | varchar(200) |
+-------------------+---------------------+
#### TABELLA RECENSIONI ####
+--------------------+---------------------+
| Field | Type |
+--------------------+---------------------+
| id | int(6) unsigned |
| band | varchar(100) |
| titolo | text |
| label1 | tinyint(3) unsigned |
| label2 | tinyint(3) unsigned |
| distribuzione | tinyint(3) unsigned |
| promo_agency1 | tinyint(3) unsigned |
| promo_agency2 | tinyint(3) unsigned |
+--------------------+---------------------+
La seguente era la query compatibile con MySQL 5:
Codice PHP:
SELECT DISTINCT
sr.id AS id,
sr.band AS band,
sr.titolo AS titolo,
(SELECT ap.nome FROM anagrafica_partner ap WHERE ap.id = sr.label1) AS label1,
(SELECT ap.nome FROM anagrafica_partner ap WHERE ap.id = sr.label2) AS label2,
(SELECT ap.nome FROM anagrafica_partner ap WHERE ap.id = sr.promo_agency1) AS promo_agency
FROM
status_recensioni sr, anagrafica_partner ap
ORDER BY
sr.data_arrivo ASC,
sr.band ASC,
sr.status ASC
La seguente è la query di JOIN che sostituisce una sola subquery (funzionante):
Codice PHP:
SELECT
sr.id AS id,
sr.band AS band,
sr.titolo AS titolo,
ap.nome AS label1
FROM
status_recensioni sr
JOIN
anagrafica_partner ap
ON
ap.id = sr.label1
ORDER BY
sr.data_arrivo ASC,
sr.band ASC,
sr.status ASC
Non riesco ad aggiungere le altre due JOIN.
Chi riesce a darmi una mano?
Grazie