Escludere dati da una query

  • Creatore Discussione Creatore Discussione Max61
  • Data di inizio Data di inizio

Max61

Utente Attivo
2 Mar 2014
760
4
18
Salve, da giorni mi sto arrovellando per escludere alcuni record da una query, ho provato in diversi modi, con <> oppure NOT REGEXP oppure != ma nessuno funziona.
Le tipologie di dati da escludere sono queste: "Sclass." oppure "Seg.con" oppure "Seg.con.pol".
La query è una SELECT.

Vi chiedo un aiuto

Grazie
Max61
 
Ma hai messo qualcosa tipo :

PHP:
 $sql = "SELECT campo, campo2, campo3 FROM tabella WHERE campo != 'Sclass.' AND  campo != 'Seg.con' AND campo != 'Seg.con.pol'";

Prova così e fammi sapere..
 
Ultima modifica:
Ma hai messo qualcosa tipo :

PHP:
 $sql = "SELECT campo, campo2, campo3 FROM tabella WHERE campo != 'Sclass.' AND  campo != 'Seg.con' AND campo != 'Seg.con.pol'";

Prova così e fammi sapere..


Si ho fatto sia così che con tutti gli altri operatori (<> ECC.)
Ma non funziona...anzi per la precisione l'unico che mi toglie è Gen.ST e non capisco perchè solo questo!

Grazie ancora
Max61
 
Giusto.. non ci avevo pensato.. Ansichè AND dobbiamo, in questo caso, usare OR..
Anche se ce n'è solo uno a te serve che non lo selezioni giusto..
 
si è giusto, voglio escluderli, ma avevo anche provato con or, ma niente, addirittura con or mi riesume anche il record contenente
Gen.ST che con and mi sparisce.

Ti posto parte della query
PHP:
WHERE posizione != 'Sclas.' and posizione != 'Gen.ST' and ...
così mi esclude Gen.ST

PHP:
WHERE posizione != 'Sclas.' or posizione != 'Gen.ST' or...
così me lo ripropone...

non so dove sbattere la testa!!!

Max61
 
Ciao, puoi provare con NOT IN
Codice:
WHERE posizione NOT IN ('Sclas.','Gen.ST')
 
si è giusto, voglio escluderli, ma avevo anche provato con or, ma niente, addirittura con or mi riesume anche il record contenente
Gen.ST che con and mi sparisce.

Ti posto parte della query
PHP:
WHERE posizione != 'Sclas.' and posizione != 'Gen.ST' and ...
così mi esclude Gen.ST

PHP:
WHERE posizione != 'Sclas.' or posizione != 'Gen.ST' or...
così me lo ripropone...

non so dove sbattere la testa!!!

Max61



Ciao e grazie per l'interessamento, ma NOT IN ('Sclas.','Gen.ST'), lo avevo già provato anche se non lo avevo menzionato ma l'unico record che mi toglie è sempre e solo quello contenente Gen.ST.

Veramente non capisco...sono tutte stringhe!!!

Grazie
Max61
 
quindi Sclass. è una parte della stringa ?
devi usare NOT LIKE = "%'Sclas.%"
 
scusa ho scritto una cavolata, la sintassi corretta è
Codice:
NOT LIKE "%Sclas.%"
 
Provato, ma anche così esclude sempre e solo Gen.ST!!!

Ho fatto una prova, ho sostituto la parola Sclas. con Gen.ST (l'unica stringa che toglie) me le doveva escludere tutte, invece niente.
Infatti i record che prima avevano la stringa Sclas. e adesso cambiati con Gen.ST ci sono tutti!!!

Quindi deduco che il problema sta da un altra parte...non nelle stringhe!!!

Se hai qualche idea in merito...

Max61
 
Forse sbaglio nell'impostare la query, spiego meglio cosa voglio fare:
voglio visualizzare solo i record che hanno queste caratteristiche:
campo posizione = 'Gen.', 'Div.' e Clas.
campo calcolato peso_X_congiunturale >= 4000 e <= -4000
voglio escludere tutti gli altri record anche se hanno i valori compresi tra >= 4000 e <= -4000 (sono quelli Sclas. ecc.).
Posto la query che ho fatto:
PHP:
$query = "SELECT id, prodotto, posizione, peso, congiunturale, tendenziale,  round(peso_X_congiunturale, 0) as peso_X_congiunturale FROM comunicato_stampa 
		  WHERE posizione NOT LIKE '%Sclas.%' and posizione NOT LIKE '%Gen.ST%' and peso_X_congiunturale >= 4000 or peso_X_congiunturale <= -4000 or posizione='Gen.' or posizione='Div.'";

Spero di essermi spiegato
Max61
 
campo posizione = 'Gen.', 'Div.' e Clas.
non specifichi bene, quindi due possibilità,

PHP:
where ( posizione like "Gen.%" OR posizione like "Div.%" OR posizione like "Clas.%" ) AND .....

oppure 

devi lavorare con le stringhe esatte se vuoi rispettare anche la lunghezza della parola da cercare

anche nel secondo caso non è chiaro, da come hai scritto sembra che tu voglia estrarre quelli che stanno fuori
campo calcolato peso_X_congiunturale >= 4000 e <= -4000

quindi

PHP:
..... AND ( peso_X_congiunturale  >= 4000 OR peso_X_congiunturale <= -4000 )

altrimenti

..... AND  ( peso_X_congiunturale  >= -4000 AND peso_X_congiunturale <= 4000 )

poi ... pensa positivo ... chi vuoi includere (è più facile)

ciao
Marino
 
Ultima modifica:
Escludere dati da query

non specifichi bene, quindi due possibilità,

PHP:
where ( posizione like "Gen.%" OR posizione like "Div.%" OR posizione like "Clas.%" ) AND .....

oppure 

devi lavorare con le stringhe esatte se vuoi rispettare anche la lunghezza della parola da cercare

anche nel secondo caso non è chiaro, da come hai scritto sembra che tu voglia estrarre quelli che stanno fuori


quindi

PHP:
..... AND ( peso_X_congiunturale  >= 4000 OR peso_X_congiunturale <= -4000 )

altrimenti

..... AND  ( peso_X_congiunturale  >= -4000 AND peso_X_congiunturale <= 4000 )

poi ... pensa positivo ... chi vuoi includere (è più facile)

ciao
Marino






Riprovo a spiegarmi:
voglio visualizzare solo i record che hanno queste caratteristiche:
il campo posizione deve essere solo: 'Gen.', 'Div.' e Clas.
campo calcolato: dove il valore del campo peso_X_congiunturale sta tra -4000 e 4000.
Voglio escludere tutti gli altri record anche se hanno i valori compresi tra -4000 e 4000.

Con la speranza di essermi spiegato...
Max61
 
mi sembra di aver postato indicazioni sufficienti per la query,
lavoro con MS Sql, non con mySql, potrebbero esserci differenze nella gestione delle stringhe,
questa è la ragione per cui non ho scritto il comando ma il suggerimento
oppure
devi lavorare con le stringhe esatte se vuoi rispettare anche la lunghezza della parola da cercare
penso che tu possa leggere il manuale mySql e scrivere quella parte
ciao
Marino
 
mi sembra di aver postato indicazioni sufficienti per la query,
lavoro con MS Sql, non con mySql, potrebbero esserci differenze nella gestione delle stringhe,
questa è la ragione per cui non ho scritto il comando ma il suggerimento

penso che tu possa leggere il manuale mySql e scrivere quella parte
ciao
Marino



Grazie per l'aiuto...hai ragione a pensare positivo a volte conviene...

Max61
 

Discussioni simili