Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243

    LIKE di una variabile su 2 colonne di una tabella, come?

    Ciao ho questa query che in MDB funzionava:

    SELECT * FROM netinfo where TIPOSCHEDA = 'F' and ( OGGETTO & OGGETTO2 LIKE '%nome1%' AND OGGETTO & OGGETTO2 LIKE '%nome2%' AND OGGETTO & OGGETTO2 LIKE '%eccetera%' ) ORDER BY NUMCATGEN, INVN, AUTORE, OGGETTO, SOGGETTO


    Come vedete devo fare una ricerca che può essere plurima nelle colonne OGGETTO e OGGETTO2..
    In Access con & si legavano le due colonne ma in mysql non mi funziona come mai? come posso fare questo anche in mysql?! grazie

    Avevo già postato questo msg ma forse il titolo non esprimeva bene il problema..

    CIAO!

  2. #2
    Moderatore di Server Apache L'avatar di marketto
    Registrato dal
    Sep 2001
    Messaggi
    5,858
    devi trasformare questo (e gli altri costrutti simili):
    codice:
    OGGETTO & OGGETTO2 LIKE '%nome1%'
    in
    codice:
    (OGGETTO LIKE '%nome1%' AND OGGETTO2 LIKE '%nome1%')

    think simple think ringo

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Si così era evidente si potesse ma in questo caso sarebbe pure errato perchè:

    ( OGGETTO & OGGETTO2 LIKE '%nome1%' AND OGGETTO & OGGETTO2 LIKE '%nome2%' AND OGGETTO & OGGETTO2 LIKE '%eccetera%' )


    OGGETTO & OGGETTO2 LIKE '%nome1%'

    AND

    OGGETTO & OGGETTO2 LIKE '%nome2%'

    ecc...


    Come vedi avendo unito le due colonne io AND lo uso SOLO quando cerco un altra variabile in quelle 2 colonne ma se separo le colonne come hai proposto tu dovrei intanto mettere un OR tra oggetto e oggetto2 due perchè non è detto che in entrambe le colonne trovo quello che cerco e cmq devo usare AND quando cerco un altra variabile in OGGETTO & OGGETTO"

    Tu forse intendevi questo:

    ( OGGETTO LIKE '%nome1%' AND OGGETTO LIKE '%nome2%' AND OGGETTO LIKE '%eccetera%' )

    or

    ( OGGETTO2 LIKE '%nome1%' AND OGGETTO2 LIKE '%nome2%' AND OGGETTO2 LIKE '%eccetera%' )


    Ovvero duplicare le stesse ricerche con le stesse variabili ma su tutte e due le colonne..

    Mi sembra però un dispendio di risorse inutile e cmq sia se si poteva fare in access in sql non esiste nulla per fare come la &???

    Grazie cmq ciao!

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Do ulteriori spiegazioni per capire meglio..

    Dato che ci inviano gli aggiornamenti del database da un altro uffico e dato che loro redigono un mdb tramite un programma anche se la struttura di questo mdb è molto contorna non possiamo modificarla per non tirare su un vespaio...

    programma da rifare ecc ecc..

    ora devo passare da mdb e asp in php e mysql.. ho già scritto il motore in php e passato l'mdb su mysql... rispetto ad asp e access ho solo questo problema.. usavano questa & per unire le due colonne..

    le query sql le genero tutte in modo dinamico quindi le combinazioni sono tantissime in base al numero dei campi compilati e alle parole scritte all' interno..

    Campi del tipo
    autore
    titolo
    catalogo
    ineventario
    ecc..

    pero ogni parola scritta all' interno di ciascun form faccio pure un and al like per raffinare la ricerca se uno utilizza piu parametri..

    tipo posso scrivere solo il nome dell autore.. o nome e cognome

    IMPORTANTE!!

    OGGETTO E OGGETTO2 sono due colonne..

    O è piena una O è pienà l' altra NELLA RIGA
    nel senso che nella stessa riga non avro mai oggetto è oggetto2 riempite ma o una o l'altra..

    non chiedete il motivo perchè non lo so e non lo voglio sapere.. ma deve funzionare cosi...

  5. #5
    ho letto di fretta e magari non é la soluzione per la tua richiesta ... ma troverai interessanti spunti

    (CONCAT(' .',sitelink,'. ') LIKE '%$link%' OR CONCAT(' ',pippo,' ',pluto,' ',paperino,' ') LIKE '% $parola %')

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Grazie

    non ho capito bene tutti quegli apici e virgolette..

    in pratica cosa dovrebbe fare?

    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    mah ho provato ma non funziona anche se lo metto dopo il select

  8. #8
    [supersaibal]Originariamente inviato da Steel
    mah ho provato ma non funziona anche se lo metto dopo il select [/supersaibal]
    funziona, funziona .... e anche bene.

    a te serve solo questo pezzo dell'espressione

    CONCAT(' ',colonna1,' ',colonna2,' ') LIKE '% $parola %'

    che esegue un OR e non un AND tra le colonne.

  9. #9
    quando non si capisce un espressione poi google fa miracoli http://dev.mysql.com/doc/mysql/en/string-functions.html

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2000
    Messaggi
    243
    Ma funziona e anche bene perchè lo supponi dato che l' hai letto o hai provato?

    perchè io ho fatto questa query:

    SELECT * FROM netinfo where TIPOSCHEDA = 'F' and CONCAT(' ',OGGETTO,' ',OGGETTO2,' ') LIKE '%bagetti%' ORDER BY NUMCATGEN, INVN, AUTORE, OGGETTO, SOGGETTO

    e non mi risponde nulla...

    ammesso che poi quegli apici singoli servano a qualcosa..

    Grazie ciao..
    cmq ho risolto ieri così:

    SELECT * FROM netinfo where TIPOSCHEDA = 'F' and ((OGGETTO LIKE '%ciao%' and OGGETTO LIKE '%ciao%') or (OGGETTO2 LIKE '%ciao%' and OGGETTO2 LIKE '%ciao%')) ORDER BY NUMCATGEN, INVN, AUTORE, OGGETTO, SOGGETTO

    Anche se non mi piace tanto cmq..

    ero curioso di usare sta giunzione ma non va..

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 © 2024 vBulletin Solutions, Inc. All rights reserved.