PDA

View Full Version : [php mysql] Ricerca database tramite query


hpx2000
03-05-2018, 16:04
Ciao a tutti, nel lontano 2005 mi sono fatto fare uno script su freelancer,
una sorte di blog in cui la mia associazione postasse le news.
Vorrei poterlo migliorare da me piano piano non avendo tantissime funzione vorrei inserire delle cose a noi utili, e ci sto provando.

Se qualcuno cosi gentile mi dà qualche dritta su come fare alcune query MYSQL che non riesco proprio a fare, sono giorni che vado sul web a trovare esempi :cry:

Ho due tabelle: Autori e News

AUTORI è strutturata cosi:
IDAutore
CognomeAutore
NomeAutore

NEWS invece cosi:
IDNews
TitoloNews
TestoNews
IDAutore
DataInserimento


Come faccio a fare una query,
in cui, se digito il cognome dell'autore mi prenda dentro la tabella NEWS tutti i suoi articoli?


Form ricerca per autore,
metto il cognome,
và nel database, associa il cognome all'ID
poi va nella tabella news, sapendo l'ID
mi tira fuori tutte le sue scritture.

Non ci riesco proprio.

:stordita:

ilcappio
03-05-2018, 16:31
Come faccio a fare una query,
in cui, se digito il cognome dell'autore mi prenda dentro la tabella NEWS tutti i suoi articoli?

Allora se il tuo schema è così

IDAutore
CognomeAutore
NomeAutore

IDNews
TitoloNews
TestoNews
IDAutore
DataInserimento


la query sarà

SELECT * FROM NEWS WHERE IDAutore IN (SELECT IDAutore FROM AUTORI WHERE CognomeAutore = "COGNOME CHE INSERISCI");

Nuke987
03-05-2018, 23:37
Le soluzioni proposte in precedenza non sono il massimo. È molto più semplice fare una JOIN che tra l'altro è anche molto più performante.
SELECT t2.IDNews, t2.TitoloNews, t2.TestoNews, t2.IDAutore, t2.DataInserimento FROM Autori AS t1 LEFT JOIN News AS t2 ON t1.IDAutore = t2.IDAutore WHERE t1.IDAutore = 'Rossi'

iezzetto
04-05-2018, 16:10
Perchè usare gli alias???

semplicemente puoi fare cosi se hai bisogno solo delle colonne di news (visto che l'autore già ce l'hai)....

SELECT NEWS.*
FROM Autori
INNER JOIN News ON Autori.IDAutore = NEWS.IDAutore
WHERE Autori.CognomeAutore = 'pippo'

Nuke987
04-05-2018, 21:23
Perchè usare gli alias???

semplicemente puoi fare cosi se hai bisogno solo delle colonne di news (visto che l'autore già ce l'hai)....

SELECT NEWS.*
FROM Autori
INNER JOIN News ON Autori.IDAutore = NEWS.IDAutore
WHERE Autori.CognomeAutore = 'pippo'
Per abitudine. Preferisco t1, t2, t3 piuttosto che i nomi completi delle tabelle. Quando devi joinare 4, 5 o più tabelle con GROUP, HAVING, sfilze di WHERE, operazioni su datatype particolari, mettere i place holder, gli oggetti... che palle :doh: 12 kilometri di query non si reggono :D Così scrivo meno. Gli alias son lì per quello.

iezzetto
08-05-2018, 11:47
Per abitudine. Preferisco t1, t2, t3 piuttosto che i nomi completi delle tabelle. Quando devi joinare 4, 5 o più tabelle con GROUP, HAVING, sfilze di WHERE, operazioni su datatype particolari, mettere i place holder, gli oggetti... che palle :doh: 12 kilometri di query non si reggono :D Così scrivo meno. Gli alias son lì per quello.

Non dico che non sono utili.
Anche io li utilizzo in query/script complessi.

Però magari gli dò un alias più decente invece che t1, t2, t3. :D
Diciamo un alias parlante.

Nuke987
08-05-2018, 20:32
Non dico che non sono utili.
Anche io li utilizzo in query/script complessi.

Però magari gli dò un alias più decente invece che t1, t2, t3. :D
Diciamo un alias parlante.
Sono avido di parole :D