Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-09-2007, 16:55   #1
Teju
Member
 
L'Avatar di Teju
 
Iscritto dal: Mar 2007
Messaggi: 284
[PHP-SQL] Impossibile... ma mi succede...

Ciao gente, ho una query che, tramite un po' di giri incasinati, arriva a formarsi così:
Codice PHP:
SELECT DISTINCT organization.idorganization.nameorganization.acronym
FROM contact
.org_itemcontact.organization
WHERE 
(
organization.name LIKE '%%'
OR organization.acronym LIKE '%%'
OR organization.website LIKE '%%'
OR organization.comment LIKE '%%'
OR organization.remarks LIKE '%%'
OR organization.assessment LIKE '%%'
)
AND (
(
(
org_item.item_id '843'
AND org_item.org_id organization.id
)
OR (
org_item.item_id '847'
AND org_item.org_id organization.id
)
)
AND (
(
org_item.item_id '513'
AND org_item.org_id organization.id
)
)
)
ORDER BY organization.nameorganization.acronym
LIMIT 0 
30 
Eseguendola non mi trova alcun risultato (anche se ne dovrebbe trovare...)

Ho pensato ad un errore nel formularla, allora ho provato a sostituire dei pezzi con un "1" e così me la risolve sempre:

Codice PHP:
SELECT DISTINCT organization.idorganization.nameorganization.acronym
FROM contact
.org_itemcontact.organization
WHERE 
(
organization.name LIKE '%%'
OR organization.acronym LIKE '%%'
OR organization.website LIKE '%%'
OR organization.comment LIKE '%%'
OR organization.remarks LIKE '%%'
OR organization.assessment LIKE '%%'
)
AND (
(
(
1
)
)
AND (
(
org_item.item_id '513'
AND org_item.org_id organization.id
)
)
)
ORDER BY organization.nameorganization.acronym
LIMIT 0 
30 
e

Codice PHP:
SELECT DISTINCT organization.idorganization.nameorganization.acronym
FROM contact
.org_itemcontact.organization
WHERE 
(
organization.name LIKE '%%'
OR organization.acronym LIKE '%%'
OR organization.website LIKE '%%'
OR organization.comment LIKE '%%'
OR organization.remarks LIKE '%%'
OR organization.assessment LIKE '%%'
)
AND (
(
(
org_item.item_id '843'
AND org_item.org_id organization.id
)
OR (
org_item.item_id '847'
AND org_item.org_id organization.id
)
)
AND (
(
1
)
)
)
ORDER BY organization.nameorganization.acronym
LIMIT 0 
30 
...non capisco dunque come la prima query non dia risultati se entrambe queste trovano una soluzione...
__________________
T -> <- C

.: Vado.li - oltre ogni frontiera!!
.: Ho fatto affari recentemente su HWU Forum con: CloudsITA;
Teju è offline   Rispondi citando il messaggio o parte di esso
Old 25-09-2007, 18:29   #2
Torav
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 558
beh non sono un grande esperto di sql e magari sto per dire una fregnaccia, ma non è detto che le condizioni a cui tu hai sostituito uno siano entrambe vere SIMULTANEAMENTE, il che (se non sbaglio) invece richiede la tua query
Torav è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2007, 10:02   #3
Teju
Member
 
L'Avatar di Teju
 
Iscritto dal: Mar 2007
Messaggi: 284
Boh, secondo me se le due query "modificate" funzionano entrambe dando risultati, anche la prima intera dovrebbe dare risultati... corretti o no ma qualche risultato dovrebbe darmelo... no??
__________________
T -> <- C

.: Vado.li - oltre ogni frontiera!!
.: Ho fatto affari recentemente su HWU Forum con: CloudsITA;
Teju è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2007, 16:10   #4
amedeoviscido
Senior Member
 
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
Sostituisci il primo AND con una OR.
In pratica, se parte a destra dell'AND è falsa, lo è anche la parte a sinistra. Con OR non è vero. Ti ricordo le tabelle di verità:

A AND B
-------
A B AND
F F F
F V F
V F F
V V V

A OR B
------
A B OR
F F F
F V V
V F V
V V V
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17
Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo
amedeoviscido è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2007, 17:12   #5
Teju
Member
 
L'Avatar di Teju
 
Iscritto dal: Mar 2007
Messaggi: 284
Quote:
Originariamente inviato da amedeoviscido Guarda i messaggi
Sostituisci il primo AND con una OR.
In pratica, se parte a destra dell'AND è falsa, lo è anche la parte a sinistra.
Non credo di dover far ciò... nel senso, nella query che ho riportato ho la prima parte con i LIKE "%%", ovvero prendere tutto, ma di solito verrebbe una cosa tipo LIKE "%nome%", dunque lì dovrebbe rimanere l'AND, perchè appunto voglio che non mi compaiano risultati se una delle due cose non è rispettata...
__________________
T -> <- C

.: Vado.li - oltre ogni frontiera!!
.: Ho fatto affari recentemente su HWU Forum con: CloudsITA;
Teju è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2007, 17:27   #6
amedeoviscido
Senior Member
 
Iscritto dal: May 2005
Città: Napoli - Fuorigrotta
Messaggi: 471
Scusami ma allora non riesco a capire a cosa serva la prima parte!?
__________________
Acquisti sul mercatino: grabrihc, LucaXbox360, Yarsha,micanto1,American horizo,Fnac,schumyFast,STECCO,Ezechiele25,17
Vendite sul mercatino: musodatopo,alexbands,mspr,anto.wajo
amedeoviscido è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2007, 18:52   #7
Torav
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 558
Quote:
Originariamente inviato da Teju Guarda i messaggi
Boh, secondo me se le due query "modificate" funzionano entrambe dando risultati, anche la prima intera dovrebbe dare risultati... corretti o no ma qualche risultato dovrebbe darmelo... no??
beh se l'intersezione dei due insieme che le query "modificate" ti danno è vuoto allora con l'AND non trovi nulla...
Torav è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2007, 18:22   #8
Teju
Member
 
L'Avatar di Teju
 
Iscritto dal: Mar 2007
Messaggi: 284
Quote:
Originariamente inviato da amedeoviscido Guarda i messaggi
Scusami ma allora non riesco a capire a cosa serva la prima parte!?
Beh, la prima parte mi pare ovvio cosa serve, cercare all'interno delle organizzazioni con una parola chiave.
L'esempio scritto da me ha il LIKE "%%" ovvero cerca tutto, ma la query generata non è sempre uguale, può anche avere le condizioni LIKE "%srl%" e cerca solo tra le org che sono srl...

Quote:
Originariamente inviato da Torav Guarda i messaggi
beh se l'intersezione dei due insieme che le query "modificate" ti danno è vuoto allora con l'AND non trovi nulla...
Ma, se io sostituisco con l'1 (ovvero con un TRUE) prima questa parte:
Codice PHP:

org_item.item_id '843' 
AND org_item.org_id organization.id 

OR ( 
org_item.item_id '847' 
AND org_item.org_id organization.id 

e poi questa:
Codice PHP:

org_item.item_id '513' 
AND org_item.org_id organization.id 

ed entrambi trova risultati, vuol dire che entrambe le condizioni generano un TRUE, altrimenti se una fosse FALSE quando è scritta intera e non sostituita con l'1 non dovrebbe dare cmq risultati...

__________________
T -> <- C

.: Vado.li - oltre ogni frontiera!!
.: Ho fatto affari recentemente su HWU Forum con: CloudsITA;
Teju è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2007, 13:00   #9
Alien
Senior Member
 
L'Avatar di Alien
 
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
per forza che non funziona
Quale riga può avere due valori differenti di
Quote:
organization.id
?

tu scrivi:

Quote:
(
org_item.item_id = '843'
AND org_item.org_id = organization.id
)
OR (
org_item.item_id = '847'
AND org_item.org_id = organization.id
)
AND

Quote:
(
org_item.item_id = '513'
AND org_item.org_id = organization.id
)
e quando mai può esser realizzata?

Comunque la clausola di join
Quote:
org_item.org_id = organization.id
è inutile scriverla tre volte è sufficiente una sola e risulta anche più chiaro il codice di conseguenza.
__________________
il forum italiano delle torce www.cpfitaliforum.it
Alien è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2007, 14:25   #10
Teju
Member
 
L'Avatar di Teju
 
Iscritto dal: Mar 2007
Messaggi: 284
No... non mi pare proprio...
Quella clausola di JOIN è corretta secondo me!

In pratica io seleziono tutte gli "organization.id" della tabella "organization", ma scelgo solo quelli che, collegandomi alla tabella org_item (composta da 2 campi: org_id e item_id), risultano avere l'idem_id pari al valore scelto.
Tutti gli "organization.id" hanno lo stesso valore all'interno della query...

__________________
T -> <- C

.: Vado.li - oltre ogni frontiera!!
.: Ho fatto affari recentemente su HWU Forum con: CloudsITA;
Teju è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2007, 14:29   #11
Teju
Member
 
L'Avatar di Teju
 
Iscritto dal: Mar 2007
Messaggi: 284
Quote:
Originariamente inviato da Alien Guarda i messaggi
Comunque la clausola di join è inutile scriverla tre volte è sufficiente una sola e risulta anche più chiaro il codice di conseguenza.
Su questo ti do ragione, ma essendo una query generata dinamicamente preferivo per "chiarezza" segnalarla ogni volta...
__________________
T -> <- C

.: Vado.li - oltre ogni frontiera!!
.: Ho fatto affari recentemente su HWU Forum con: CloudsITA;
Teju è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2007, 14:50   #12
Alien
Senior Member
 
L'Avatar di Alien
 
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
Quote:
Originariamente inviato da Teju Guarda i messaggi
No... non mi pare proprio...
Quella clausola di JOIN è corretta secondo me!

scusa
avevo letto di fretta e ho fatto confusione tra i diversi ID
Appena ho un attimo ci rifletto meglio.
__________________
il forum italiano delle torce www.cpfitaliforum.it
Alien è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2007, 19:19   #13
Alien
Senior Member
 
L'Avatar di Alien
 
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
Ho ri-flettuto nuovamente e son ri-tornato alla mia precedente conclusione: è impossibile che sia verificato quell'AND tra 2 valori diversi dell'ID.
Tu vorresti ottener una riga dove org_item.item_id abbia due valori diversi il che non è possibile.
Cioè:

(org_item.item_id = '843' OR org_item.item_id = '847') AND org_item.item_id = '513' non potrà mai esser verificato perchè o vale 843 oppure 847 OPPURE (e non "e anche") 513. Il problema è tutto lì.

Come se pretendessi di ottenere il nome del presentatore di Miss Italia che fa di nome Mike e Loretta. Non ottieni due risultati ma nessuno.
__________________
il forum italiano delle torce www.cpfitaliforum.it
Alien è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2007, 20:09   #14
Teju
Member
 
L'Avatar di Teju
 
Iscritto dal: Mar 2007
Messaggi: 284
Quote:
Originariamente inviato da Alien Guarda i messaggi
(org_item.item_id = '843' OR org_item.item_id = '847') AND org_item.item_id = '513' non potrà mai esser verificato perchè o vale 843 oppure 847 OPPURE (e non "e anche") 513. Il problema è tutto lì.
uhm... ti seguo credo, forse ho capito... ma come si fa allora a fare una query così??
Suggerimenti?

...EDIT: ok, ho capito l'errore, ora xò non saprei come creare la query...
__________________
T -> <- C

.: Vado.li - oltre ogni frontiera!!
.: Ho fatto affari recentemente su HWU Forum con: CloudsITA;

Ultima modifica di Teju : 01-10-2007 alle 20:11.
Teju è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2007, 20:27   #15
Alien
Senior Member
 
L'Avatar di Alien
 
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
Quote:
Originariamente inviato da Teju Guarda i messaggi
uhm... ti seguo credo, forse ho capito... ma come si fa allora a fare una query così??
Suggerimenti?

...EDIT: ok, ho capito l'errore, ora xò non saprei come creare la query...
Dipende dal risultato che vuoi ottenere
Così di primo acchito direi mettendo in OR anche la condizione

Quote:
(
(
org_item.item_id = '513'
AND org_item.org_id = organization.id
)
)
però se posti la struttura delle tabelle con qualche dato e il risultato che vuoi ottenere provo a perderci un po' di tempo, tanto son a casa ammalato
__________________
il forum italiano delle torce www.cpfitaliforum.it
Alien è offline   Rispondi citando il messaggio o parte di esso
Old 01-10-2007, 21:02   #16
Teju
Member
 
L'Avatar di Teju
 
Iscritto dal: Mar 2007
Messaggi: 284
Ok, provo a spiegarti... ho 3 tabelle:

organization (interessa solo che abbia un ID identificativo)
item (hanno ID identificativo, un ID_categoria e un label)
org_item (hanno ID identificativo, org_id e item_id)

ho una pagina di search in cui posso cercare una organizzazione secondo una parola chiave o secondo dei criteri di ricerca sugli ITEM.

Gli ITEM sono suddivisi in categorie.

Criteri di ricerca sugli ITEM:
- i vari ITEM della stessa categoria sono in OR
- tra le diverse categorie dev'esserci un AND

Mi spiego con un esempio di dati: nella tabella ITEM ho:
1 . 1 . Italy
2 . 1 . France
3 . 2 . Socialmente utili
4 . 1 . Spain

Ho una organizzazione:
232 . nome e caratteristiche varie...

In org_item ho:
1 . 232 . 1
2 . 232 . 2
3 . 232 . 3

Ovvero l'organizzazione con ID 232 è classificata sotto Italy, France e Socialmente utili.

La mia query potrebbe chiedermi di selezionare le organizzazioni che hanno in "categoria = 1" Italy o France (dunque in OR) AND siano socialmente utili.

Spero si capisca...
__________________
T -> <- C

.: Vado.li - oltre ogni frontiera!!
.: Ho fatto affari recentemente su HWU Forum con: CloudsITA;
Teju è offline   Rispondi citando il messaggio o parte di esso
Old 02-10-2007, 19:31   #17
Bl4xoR
Senior Member
 
L'Avatar di Bl4xoR
 
Iscritto dal: Feb 2005
Città: Bisceglie (BT)
Messaggi: 1091
formula le query in modo corretto verbalmente, senza metterci robe di codice etc. si capirebbe di più
__________________
[Laptop] DELL XPS 15 9510 (2021) i7-11800H, 16GB, 1TB SSD WDC SN730 NVMe, GeForce RTX 3050 4GB, Display Full HD [Mobile] Google Pixel 4a
Bl4xoR è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
Iliad: si consolida la partnership tecno...
Il SoC a 2 nm di Samsung non sfigura nel...
Prezzo shock per i Galaxy Buds FE + nuov...
Il nuovo SoC di Qualcomm vuole stupire: ...
Offerta lampo per pulire l'auto: aspirap...
I robotaxi di Amazon entrano in azione: ...
ECOVACS DEEBOT T50 PRO OMNI Gen2 domina ...
iPhone 17 Pro su Amazon: tutti i colori,...
Disney Plus da 2,99 euro al mese per 3 m...
Nuovo test di accensione dei motori per ...
Novità dalle analisi dell'asteroi...
La PS6 sarà più potente del previsto: ec...
Sony svela Xperia 10 VII: è il nu...
Amazon Weekend da urlo: iPhone 16 a prez...
Spotify diffida ReVanced: chiesta la rim...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:25.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v