|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
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:
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:
Codice PHP:
![]() |
![]() |
![]() |
![]() |
#2 |
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
|
![]() |
![]() |
![]() |
#3 |
Member
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??
![]() |
![]() |
![]() |
![]() |
#4 |
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 |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Mar 2007
Messaggi: 284
|
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...
|
![]() |
![]() |
![]() |
#6 |
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 |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Dec 2005
Messaggi: 558
|
beh se l'intersezione dei due insieme che le query "modificate" ti danno è vuoto allora con l'AND non trovi nulla...
|
![]() |
![]() |
![]() |
#8 | ||
Member
Iscritto dal: Mar 2007
Messaggi: 284
|
Quote:
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:
Codice PHP:
Codice PHP:
![]() ![]() ![]() |
||
![]() |
![]() |
![]() |
#9 | ||||
Senior Member
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
|
per forza che non funziona
Quale riga può avere due valori differenti di Quote:
tu scrivi: Quote:
Quote:
Comunque la clausola di join Quote:
__________________
il forum italiano delle torce www.cpfitaliforum.it |
||||
![]() |
![]() |
![]() |
#10 |
Member
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... ![]() ![]() |
![]() |
![]() |
![]() |
#11 | |
Member
Iscritto dal: Mar 2007
Messaggi: 284
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
|
Quote:
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 |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
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 |
![]() |
![]() |
![]() |
#14 | |
Member
Iscritto dal: Mar 2007
Messaggi: 284
|
Quote:
![]() Suggerimenti? ...EDIT: ok, ho capito l'errore, ora xò non saprei come creare la query...
__________________
T -> ![]() .: Vado.li - oltre ogni frontiera!! .: Ho fatto affari recentemente su HWU Forum con: CloudsITA; Ultima modifica di Teju : 01-10-2007 alle 20:11. |
|
![]() |
![]() |
![]() |
#15 | ||
Senior Member
Iscritto dal: Aug 1999
Città: Como
Messaggi: 1495
|
Quote:
![]() Così di primo acchito direi mettendo in OR anche la condizione Quote:
![]()
__________________
il forum italiano delle torce www.cpfitaliforum.it |
||
![]() |
![]() |
![]() |
#16 |
Member
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... ![]() |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Feb 2005
Città: Bisceglie (BT)
Messaggi: 1091
|
formula le query in modo corretto verbalmente, senza metterci robe di codice etc.
![]() ![]()
__________________
[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 |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:25.