Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    ricerca su più campi db mySql

    Vorrei effettuare una ricerca su più campi appartenenti a due tabelle contemporaneamente.
    A parte il form di ricerca, dove la variabile assume valore '$cerca',

    qual'è la formula per effettuare con la stessa var la ricerca su più campi contemporaneamente?

    SELECT tabella1.*, tabella2.*
    FROM tabella1, tabella2
    WHERE tabella1.campo1 LIKE '$cerca'
    AND tabella1.campo2 LIKE '$cerca'
    AND tabella1.id = tabella2.idtab1
    AND tabella2.campo1 LIKE '$cerca'
    AND tabella2.campo2 LIKE '$cerca'

    Ho provato anche OR al posto di AND e credo sia più esatto, ma porta valori non esatti, forse perchè le deu tab non sono ben relazionate.

    Mi dite perfavore, dove sbaglio?


  2. #2
    Probabilmente sbagli anche nel selezionare i campi. Mi pare che i campi abbiamo lo stesso nome. Se cosi' fosse il campo della tabella 2 sovrascrive il campo della tabella 1.

    La query poi dovrebbe essere fatta cosi' se ho ben capito:
    codice:
    SELECT tabella1.*, tabella2.* 
    FROM tabella1, tabella2 
    WHERE tabella1.id = tabella2.idtab1 
    AND (
       tabella1.campo1 LIKE '$cerca'
    OR tabella1.campo2 LIKE '$cerca'
    OR tabella2.campo1 LIKE '$cerca'
    OR tabella2.campo2 LIKE '$cerca'
    )
    Occhio alle parentesi su OR.

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

  3. #3
    ecco vedi che si impara sempre....
    non sapevo ci andassero le parentesi con or, a dir il vero non l'ho nemmeno mai usato, come like del resto, ho sempre eseguito ricerca mirate, nel senso Where x = $x e basta e cmq, mai or...

    Ti ringrazio, lo provo

    Ah, i nomi dei campi sono diversi, era solo per fare l'esempio, ma perchè si sovrascrivono se specifico il nome della tab di appartenenza?


  4. #4
    Originariamente inviato da piero.mac
    Probabilmente sbagli anche nel selezionare i campi. Mi pare che i campi abbiamo lo stesso nome. Se cosi' fosse il campo della tabella 2 sovrascrive il campo della tabella 1.

    La query poi dovrebbe essere fatta cosi' se ho ben capito:
    codice:
    SELECT tabella1.*, tabella2.* 
    FROM tabella1, tabella2 
    WHERE tabella1.id = tabella2.idtab1 
    AND (
       tabella1.campo1 LIKE '$cerca'
    OR tabella1.campo2 LIKE '$cerca'
    OR tabella2.campo1 LIKE '$cerca'
    OR tabella2.campo2 LIKE '$cerca'
    )
    Occhio alle parentesi su OR.
    Uffi, non mi funziona....
    perchè???

  5. #5
    Originariamente inviato da Defly
    Ah, i nomi dei campi sono diversi, era solo per fare l'esempio, ma perchè si sovrascrivono se specifico il nome della tab di appartenenza?

    Il result set che ottieni e' costruito su una tabella provvisoria. Quindi nel risultato NON esiste piu' il nome delle due tabelle, ma la tabella sara' unita, cioe' una sola. Se due campi hanno lo stesso nome, ne troverai uno solo con il valore della seconda tabella in ordine di elenco nel SELECT.

    In altre parole, l'ultima tabella elencata sovrascrive i record con lo stesso nome della prima.


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

  6. #6
    quindi per relazionare le due tabelle basta fare quello che ho fatto io, cioè definire un campo ad esempio idtab1 in tab1 ed aggiungere lo stesso idtab1 nella tab2...?

    Lo script funziona alla perfezione....

    volevo però chiederti un'altra cosa
    riguarda le date.
    Per eseguire una ricerca in base alla data, devo inserirla al momento della ricerca così come è impostata sul db ossia: 0000-00-00, o basta formattarla tramite var in qualche modo, o semplicemente metto LIKE '%$cerca%', ma troverebbe qualsiasi riga contenente il numero inserito?!?

  7. #7
    Il formato delle date in mysql e' yyyy-mm-dd e questo e' il formato usato dalle funzioni.

    Per visualizzare in formati diversi hai la funzione date_format().

    a proposito di date ci sono articoli di html.it e pillole .

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

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.