Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Problema con NOT LIKE

  1. #1

    Problema con NOT LIKE

    Ciao a tutti questo è il mio problema:

    Ho una query che deve estrarre dal db tutti i risultati che non contengono alcune parole, per esempio se le parole sono 'ciao' e 'arrivederci', devono uscire tutti i risultati che non contengono nè ciao nè salute.
    Ho creato una query che usa 2 NOT LIKE concatenati da un AND cioè:
    (.........NOT LIKE .........) AND (..........NOT LIKE .........) ma facendo così non esce nessun risultato anche se nel db sono presenti risultati che soddisfano la query.

    Secondo voi cosa c'è che non va?

  2. #2
    stampa la query e vedi come risolvi le variabili. potrebbe essere che una delle due sia vuota e praticamente diventi:

    campo NOT LIKE '%' ....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  3. #3
    i campisono giusti perchè stampo sempre la query a video. grazie per la tua risposta

    il problema è che se la query contiene un solo NOT LIKE funziona se ne contiene di più non funziona

    un'altra domanda: è uguale usare ...... NOT LIKE ...... o NOT ....... LIKE .......

  4. #4
    Originariamente inviato da maialinodicinta
    i campisono giusti perchè stampo sempre la query a video. grazie per la tua risposta

    il problema è che se la query contiene un solo NOT LIKE funziona se ne contiene di più non funziona

    un'altra domanda: è uguale usare ...... NOT LIKE ...... o NOT ....... LIKE .......
    La sintassi e' una sola. Sarebbe bene postassi una query "reale" da valutare. Se non funziona potrebbe esserci un errore di impostazione.

    Se metti dei puntini personalmente potrei pensare esista un qualcosa che non e' quello che hai messo tu.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  5. #5
    Eccone una:

    SELECT patents.*,
    GROUP_CONCAT(DISTINCT CONCAT(applicants.name,' (',applicants.country,')') SEPARATOR '; ') AS applicants,
    GROUP_CONCAT(DISTINCT CONCAT(inventors.name,' (',inventors.country,')') SEPARATOR '; ') AS inventors,
    GROUP_CONCAT(DISTINCT CONCAT(classifications.classification,'') SEPARATOR '; ') AS classifications
    FROM (((patents LEFT JOIN inventors ON patents.idPatent=inventors.idPatent) LEFT JOIN applicants ON patents.idPatent=applicants.idPatent) LEFT JOIN info ON patents.idPatent=info.idPatent) LEFT JOIN priorities ON patents.idPatent=priorities.idPatent LEFT JOIN classifications ON patents.idPatent=classifications.idPatent
    WHERE (patents.titleEn NOT LIKE '%ciao%' AND patents.titleEn NOT LIKE '%franco%') AND (info.abstractEn NOT LIKE '%ciao%' AND info.abstractEn NOT LIKE '%franco%') AND (info.descriptionEn NOT LIKE '%ciao%' AND info.descriptionEn NOT LIKE '%franco%') AND (patents.titleFr NOT LIKE '%ciao%' AND patents.titleFr NOT LIKE '%franco%') AND (info.abstractFr NOT LIKE '%ciao%' AND info.abstractFr NOT LIKE '%franco%') AND (info.descriptionFr NOT LIKE '%ciao%' AND info.descriptionFr NOT LIKE '%franco%') AND (patents.titleDe NOT LIKE '%ciao%' AND patents.titleDe NOT LIKE '%franco%') AND (info.abstractDe NOT LIKE '%ciao%' AND info.abstractDe NOT LIKE '%franco%') AND (info.descriptionDe NOT LIKE '%ciao%' AND info.descriptionDe NOT LIKE '%franco%') AND (patents.publicationNumber NOT LIKE '%ciao%' AND patents.publicationNumber NOT LIKE '%franco%') AND (patents.applicationNumber NOT LIKE '%ciao%' AND patents.applicationNumber NOT LIKE '%franco%') AND (applicants.name NOT LIKE '%ciao%' AND applicants.name NOT LIKE '%franco%') AND (inventors.name NOT LIKE '%ciao%' AND inventors.name NOT LIKE '%franco%')
    GROUP BY patents.idPatent;

  6. #6
    come dubitavo... la realta' supera la fantasia.

    Per verificare dove "cade la query" bisognerebbe avere tabelle e dati per provare. Il metodo in questi casi e' sempre il solito: semplifica man mano la query fino a quando funziona secondo le tue aspettative..... dopo di che rimetti man mano gli altri dati.

    Con AND mettere parentesi non serve a granche' perche' e' tutto in AND... Tieni anche presente che il where viene applicato solo ai record pescati con le join.

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  7. #7
    grazie per i tuoi consigli, nei prossimi giorni provo e poi ti farò sapere se ci sono problemi.

    per quanto riguardo le parentesi ci sono perchè la query e creata da un FOR e quindi mi servono per farla creare in modo che non ci siano errori.

  8. #8
    con un po' di dati dentro (neanche tantissimi, basta qualche migliaio, con testi mediamente lunghi) quella query ci metterà probabilmente mezza giornata ad essere eseguita.

  9. #9
    c'è qualche consiglio su come costruirla, che mi potresti dare?

  10. #10
    Secondo voi se ho una query con quete condizioni fa la ricerca di tutti i risultati che contengono il termine 'xxxx' e che contemporaneamente non contengono il termine 'zzzz'? o c'è qualcosa che non va?


    SELECT patents.*, GROUP_CONCAT(DISTINCT CONCAT(applicants.name,' (',applicants.country,')') SEPARATOR '; ') AS applicants, GROUP_CONCAT(DISTINCT CONCAT(inventors.name,' (',inventors.country,')') SEPARATOR '; ') AS inventors, GROUP_CONCAT(DISTINCT CONCAT(classifications.classification,'') SEPARATOR '; ') AS classifications FROM (((patents LEFT JOIN inventors ON patents.idPatent=inventors.idPatent) LEFT JOIN applicants ON patents.idPatent=applicants.idPatent) LEFT JOIN info ON patents.idPatent=info.idPatent) LEFT JOIN priorities ON patents.idPatent=priorities.idPatent LEFT JOIN classifications ON patents.idPatent=classifications.idPatent WHERE (patents.titleEn LIKE '%xxxx%' OR info.abstractEn LIKE '%xxxx%' OR info.descriptionEn LIKE '%xxxx%' OR patents.titleFr LIKE '%xxxx%' OR info.abstractFr LIKE '%xxxx%' OR info.descriptionFr LIKE '%xxxx%' OR patents.titleDe LIKE '%xxxx%' OR info.abstractDe LIKE '%xxxx%' OR info.descriptionDe LIKE '%xxxx%' OR patents.publicationNumber LIKE '%xxxx%' OR patents.applicationNumber LIKE '%xxxx%' OR priorities.number LIKE '%xxxx%' OR patents.firstPublicationDate LIKE '%xxxx%' OR patents.publicationDate LIKE '%xxxx%' OR applicants.name LIKE '%xxxx%' OR inventors.name LIKE '%xxxx%') AND (patents.titleEn NOT LIKE '%zzzz%' OR info.abstractEn NOT LIKE '%zzzz%' OR info.descriptionEn NOT LIKE '%zzzz%' OR patents.titleFr NOT LIKE '%zzzz%' OR info.abstractFr NOT LIKE '%zzzz%' OR info.descriptionFr NOT LIKE '%zzzz%' OR patents.titleDe NOT LIKE '%zzzz%' OR info.abstractDe NOT LIKE '%zzzz%' OR info.descriptionDe NOT LIKE '%zzzz%' OR patents.publicationNumber NOT LIKE '%zzzz%' OR patents.applicationNumber NOT LIKE '%zzzz%' OR priorities.number NOT LIKE '%zzzz%' OR patents.firstPublicationDate NOT LIKE '%zzzz%' OR patents.publicationDate NOT LIKE '%zzzz%' OR applicants.name NOT LIKE '%zzzz%' OR inventors.name NOT LIKE '%zzzz%') GROUP BY patents.idPatent;

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.