PDA

View Full Version : [mysql]Ottimizzare le query


MEMon
06-01-2007, 17:54
E' possibile fare più SELECT in una sola query della stessa tabella?
Ad esempio prendere due record differenti in base a due caratteristiche differenti:
SELECT record IN tabella WHERE caratteristica="data" AND SELECT record IN tabella WHERE caratteristica="data"
esiste una cosa simile?

Sempre la stessa cosa dell'esempio sopra è possibila farla in due tabelle differenti? Cioè i record non si trovano sulla stessa tabella.

E con l'UPDATE è possibile aggiornare due record sempre come nell'esempio sopra?
Ma più che altro si può fare una roba simile: UPDATE record+=data WHERE ecc ecc
Perchè ora per appendere roba ad un record devo prima fare una query di select per leggerlo e poi faccio l'update con la roba appena letta + altra roba.

vizzz
06-01-2007, 19:26
E' possibile fare più SELECT in una sola query della stessa tabella?
Ad esempio prendere due record differenti in base a due caratteristiche differenti:
SELECT record IN tabella WHERE caratteristica="data" AND SELECT record IN tabella WHERE caratteristica="data"
esiste una cosa simile?

se la tabella è la stessa basta fare: SELECT record IN tabella WHERE caratteristica="data" OR caratteristica="data2"


Sempre la stessa cosa dell'esempio sopra è possibila farla in due tabelle differenti? Cioè i record non si trovano sulla stessa tabella.


con le join è possible farlo ma dovrebbero avere un campo in comune le 2 tabelle, e per comune vuol dire che una tabella ha una chiave primaria che la seconda tabella usa come chiave esterna...se mi sbaglio qualcuno mi corregga


E con l'UPDATE è possibile aggiornare due record sempre come nell'esempio sopra?
Ma più che altro si può fare una roba simile: UPDATE record+=data WHERE ecc ecc
Perchè ora per appendere roba ad un record devo prima fare una query di select per leggerlo e poi faccio l'update con la roba appena letta + altra roba.
si, direi di si ti posto un breve esempio

UPDATE Employee
SET salary = salary * 1.25
WHERE name = 'Bob'

MEMon
06-01-2007, 19:35
grazie mille!
Per i SELECT le mie tabelle non hanno nulla in comune, rappresentano prprio due cose etramemente diverse... :(
Nell'esempio dell'update hai usato un campo INT immagino, i miei record sono tutti di tipo TEXT xò, è possibile farlo lostesso? ora provo :D

vizzz
06-01-2007, 19:43
allora forse potresti provare a creare una view, prova a documentarti un poco.
se sono testuali non riesci a fare calcoli del genere

MEMon
06-01-2007, 19:44
ah immaginavo, guardo cosa sono le view allora...

MEMon
06-01-2007, 20:03
Per il testo esiste la medesima cosa ma bisogna usare la funzione CONCAT
Grande!

MEMon
06-01-2007, 20:35
se la tabella è la stessa basta fare: SELECT record IN tabella WHERE caratteristica="data" OR caratteristica="data2"

Ho provato ma in questo modo mi mostra solo il primo dei risultati.

Forse non mi sono spiegato io, io non volgio scelgiere lo stesso record in base a due caratteristiche, ma due record!
Ad esempio se ho una tabella così popolata:

Nome : pippo
Amico di : paperino
Nemico di : bassotti

Nome : pluto
Amico di : topolino
Nemico di : titty

Ecco io vorrei poter leggere il campo "Amico di:" per ogni record. Si può fare con una sola query?

Edit: come nn detto avevi capito benissimo e difatti funziona :D