Ciao,
beh, un buon inizio sarebbe stata la lettura del regolamento 
Visto che le query sono relative ad una tipologia specifica di database, avresti dovuto indicarlo nel titolo o, comunque, indicarlo nel corpo del messaggio ... almeno per capire di che si parla 
Se lo indichi correggo il thread.
A parte questo, ho riscritto le query in modo un attimo più comprensibile (non mi piace vedere il codice tutto ammucchiato
)
Qui c'è la prima query, che mi pare di capire debba solo elencare i giornalisti che hanno scritto articoli relativi all'argomento viaggi
codice:
SELECT
g.*
FROM
giornalista AS g
INNER JOIN servizio AS s ON
(
s.giornalista = g.codicefiscale
AND
s.argomento = "viaggi"
)
GROUP BY
g.codicefiscale
Ho usato come clausola per il group by il codice fiscale, però penso ti converrebbe assegnare un ID al giornalista e poi legare la tabella servizio al giornalista per mezzo dell'id piuttosto che per il codice fiscale cosi da:
- evitare il remoto rischio di casi di omonimia che causerebbero una strage;
- ottimizzare le query per sfruttare chiavi numeriche (ad esempio la primaria come valore numerico autoincrementante) cosi da aumentare la velocità di esecuzione della query di un bel pò;
- ottimizzare le query per sfruttare le chiavi primarie che SICURAMENTE sono uniche e certe.
qui c'è la seconda query invece la seconda query
codice:
SELECT
*
FROM
(
SELECT
g.*,
COUNT(*) AS giornalista_serviziscritti
FROM
giornalista AS g
INNER JOIN servizio AS s ON
(
s.giornalista = g.codicefiscale
)
GROUP BY
g.codicefiscale
) AS x
WHERE
x.giornalista_serviziscritti = 2
Ho usato una sintassi specifica di mysql (non so cosa tu stia usando) ovvero le tabelle derivate (derived tables) per effettuare la where sui risultati di un'altra select ... ma credo tu possa metterci qua l'having
PS: nelle query che hai postato non capisco il perché del NOT EXISTS ... cosi non gli dici di estrarti i giornalisti che NON ESISTONO nel resultset della subquery ottenendo dati sbagliati?
Originariamente inviato da optime
----------------------------------------------------
standing ovation per il titolo del thread. urge (ri)lettura attenta e consapevole del regolamento.
----------------------------------------------------