Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255

    Mysql quali campi corrispondono?

    Ho una query tipo
    SELECT * FROM `database`.`table` WHERE (`IDmanifesto` LIKE '%pinelli%' OR `Serie` LIKE '%pinelli%')

    C'è modo di sapere per la corrispondenza di quale campo il singolo record è stato selezionato, senza fare due query distinte?
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  2. #2
    codice:
    SELECT *, if(IDmanifesto LIKE '%pinelli%', 'IDmanifesto', 'Serie') as campo
    FROM `database`.`table` 
    WHERE (`IDmanifesto` LIKE '%pinelli%' OR `Serie` LIKE '%pinelli%')
    ovviamente se si trova in entrambi i campi ti dara' solo il primo.

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

  3. #3
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    in realtà io ho un po' semplificato la faccenda, i campi sono più di due... non riesco a capire come adattare if a questa evenienza
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  4. #4
    Originariamente inviato da moskitoita
    in realtà io ho un po' semplificato la faccenda, i campi sono più di due... non riesco a capire come adattare if a questa evenienza
    Puoi usare CASE ... WHEN

    http://dev.mysql.com/doc/refman/5.0/...statement.html

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

  5. #5
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Ci siamo quasi, un ultimo piccolo aiutino
    codice:
    SELECT * ,CASE
          WHEN IDmanifesto LIKE '%19%' THEN 'IDmanifesto'
          WHEN Data LIKE '%19%'THEN 'Data'
    END
     AS CASO
    FROM `Manifesti` WHERE `IDmanifesto` like '%19%'
    Nel caso in cui ci sia più di una corrispondenza, è possibile farle comprire tutte?
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  6. #6
    Originariamente inviato da moskitoita

    Nel caso in cui ci sia più di una corrispondenza, è possibile farle comprire tutte?
    codice:
    SELECT * ,
    CASE
          WHEN IDmanifesto LIKE '%19%' AND Data LIKE '%19%' 
                   THEN 'IDmanifesto-Data'
          WHEN IDmanifesto LIKE '%19%' THEN 'IDmanifesto'
          WHEN Data LIKE '%19%' THEN 'Data'
    END
     AS CASO
    FROM `Manifesti` 
    WHERE `IDmanifesto` like '%19%'

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

  7. #7
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Bella idea, ma i campi sono parecchi, mi viene una query chilometrica, e la devo generare automaticamente in php.
    Ma se non c'è altra soluzione farò cosi
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

  8. #8
    Originariamente inviato da moskitoita
    Bella idea, ma i campi sono parecchi, mi viene una query chilometrica, e la devo generare automaticamente in php.
    Ma se non c'è altra soluzione farò cosi
    ma dovresti pure fare le combinazioni.
    uno con due, uno con tre, due con tre, uno con due e con tre.....

    sei proprio certo di voler sapere in quale campo? Se fai un motore di ricerca questo ti rendera' uno o piu' record.... potrebbe anche darsi che non interessi trovare la stringa tra gli autori invece che tra la descrizione per esempio...

    Prova con una funzione in php che controlli l'esistenza della stringa cercata nei valori del campo... con strstr() o stristr() almeno si limita a scandire solo il result set invece di tutta la tabella

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

  9. #9
    Utente di HTML.it L'avatar di moskitoita
    Registrato dal
    Feb 2004
    Messaggi
    1,255
    Originariamente inviato da piero.mac
    ma dovresti pure fare le combinazioni.
    uno con due, uno con tre, due con tre, uno con due e con tre.....
    Mi riferivo a quello.
    Inizialmente avevo scartato l'idea di farlo fare a php perchè mi sembrava uno spreco di risorse, ma visto come si sta complicando la cosa mi sa che è l'unica soluzione. Grazie dell'aiuto
    "Aiuterò le forze dell'ordine a sventrare eventuali truffatori, eventuali assassini che abbiano utilizzato l'informatica per fini malvagi"

    Salvatore Aranzulla, 15 Aprile 2007, cognome&nome, La7

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.