PDA

View Full Version : Query in Mysql


CyberTop
20-02-2007, 15:41
Ciao A tutti volevo farvi una domanda,
è possibile fare query in sql che contengano una condizione ANDOR mi spiego con un esempio:
Select * from utenti where nome='poppo' and or cognome = 'poppo1'

in modo tale che se non viene inserito solo il cognome prenda tutti quelli chiamati pippo1 o se viene inserito solo il nome quelli chiamati pippo pero se inseriti entrmbi deve prendere quelli con nome pippo e cognome pippo1....

Come potri farla questa cosa???

Grazie a tutti

yorkeiser
20-02-2007, 15:48
Non ho ben capito, ma mi pare che ti basti un OR per fare ciò che desideri

Cryingcrow
20-02-2007, 15:53
potresti fare una cosa del genere:

select * from utenti where (nome='pippo' and congnome='pippo1') or (nome='pippo' or cognome='pippo1');

CyberTop
20-02-2007, 15:53
Non ho ben capito, ma mi pare che ti basti un OR per fare ciò che desideri

si facendo OR succede che se io metteo entrambi i parametri Nome = pippo e cognome =pippo1
mi da come risultato tutti gli utenti che si chiamano con nome pippo nele senzo che non restituiesce gli utenti che si chiamano strettamente con nome pippo e cognome poppo1
Capito??

andbin
20-02-2007, 15:55
Ciao A tutti volevo farvi una domanda,
è possibile fare query in sql che contengano una condizione ANDOR mi spiego con un esempio:
Select * from utenti where nome='poppo' and or cognome = 'poppo1'

in modo tale che se non viene inserito solo il cognome prenda tutti quelli chiamati pippo1 o se viene inserito solo il nome quelli chiamati pippo pero se inseriti entrmbi deve prendere quelli con nome pippo e cognome pippo1....Lo fai componendo opportunamente la stringa della query.

Se ti sono stati richiesti un nome e un cognome farai:
.... WHERE nome='...' AND cognome='...'

Se ti viene richiesto solo il nome o solo il cognome metterai solo quella condizione.

yorkeiser
20-02-2007, 16:00
L'OR è inclusivo, quindi ti restituisce anche quelli che soddisfano entrambe le condizioni.

@Cybertop: le due condizioni che hai postato equivalgono in realtà ad un singolo OR, dal momento che esso include già l'AND

[Edit]
Se invece vuoi SOLO quelli che si chiamano pippo e contemporaneamente hanno cognome pluto (o quel che l'è) devi usare l'AND, come da post di andbin

Andrea16v
20-02-2007, 19:24
Mi aggancio a questa discussione per chiedere una cosa.
Volendo selezionare le condizioni del WHERE da una lista esplicita, si puo' fare una cosa del genere?

SELECT ... FROM ... WHERE nomecolonna = (10 OR 22 OR 37 OR ...)

con il fine di pescare tutte le tuple che abbiano il valore della colonna uguale a uno dei valori indicati tra parentesi?

cionci
20-02-2007, 19:27
Puoi usare una cosa di questo tipo:

select * from tabella where attributo IN (10, 20, 30, 40);

Ma dipende molto dal dialetto...

Andrea16v
20-02-2007, 21:44
Puoi usare una cosa di questo tipo:

select * from tabella where attributo IN (10, 20, 30, 40);

Ma dipende molto dal dialetto...

Dovrei usarlo con MySQL, in realtà devo fare un UPDATE ad una tabella, ma posso fare qualche prova con la SELECT per vedere l'effetto, se mi restituisce tutte le tuple richieste allora so che posso usare la formula anche per l' UPDATE, senza rischiare.. :)