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

    [MySQL] Query con condizione

    Sto cercando di creare una query con una condizione al suo interno, non sono molto esperto di MySQL e non riesco a trovare la soluzione. Si tratta di un piccolo motore di ricerca interno, la query dovrebbe restituire un risultato se un determinato campo ha un dato valore, altrimenti cercare un risultato con un altro valore da me stabilito (o infine, ovviamente, non restituire nulla).

    Inserisco la query, molto semplificata, che ho creato fin ora.

    Codice PHP:
    SELECT
    a
    .IDb.ID_Itemb.Name
    FROM ShopItem 
    AS a JOIN ShopItem_DATALANGUAGE AS b ON a.ID=b.ID_Item
    WHERE b
    .Name LIKE '%$Name%' AND (b.Language 'en' OR b.Language 'it')"; 
    In questo caso mi vengono naturalmente restituiti risultati doppi (quando ci sono sia 'en' che 'it'), al posto dell'OR ci dovrebbe essere un ELSE.

  2. #2
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: [MySQL] Query con condizione

    Originariamente inviato da Dedozzo
    Sto cercando di creare una query con una condizione al suo interno, non sono molto esperto di MySQL e non riesco a trovare la soluzione. Si tratta di un piccolo motore di ricerca interno, la query dovrebbe restituire un risultato se un determinato campo ha un dato valore, altrimenti cercare un risultato con un altro valore da me stabilito (o infine, ovviamente, non restituire nulla).

    Inserisco la query, molto semplificata, che ho creato fin ora.

    Codice PHP:
    SELECT
    a
    .IDb.ID_Itemb.Name
    FROM ShopItem 
    AS a JOIN ShopItem_DATALANGUAGE AS b ON a.ID=b.ID_Item
    WHERE b
    .Name LIKE '%$Name%' AND (b.Language 'en' OR b.Language 'it')"; 
    In questo caso mi vengono naturalmente restituiti risultati doppi (quando ci sono sia 'en' che 'it'), al posto dell'OR ci dovrebbe essere un ELSE.
    Per come hai scritto la query prenderà sempre le righe doppie. Devi fissare una lingua (en piuttosto che it) all'interno della query

  3. #3
    Eh certo, come?

    Se non c'è 'en' cerca 'it', si dovrebbe poter fare solo con la query, ma come?

  4. #4
    la clausola DISTINCT dovrebbe fare al caso tuo

  5. #5
    Con distinct avrei risolto, anche se poi la query che ho dovuto eseguire è stata di gran lunga più complicata (per altri motivi). Grazie comunque!

  6. #6
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da Dedozzo
    Con distinct avrei risolto, anche se poi la query che ho dovuto eseguire è stata di gran lunga più complicata (per altri motivi). Grazie comunque!
    In base ai campi che esponi:

    a.ID, b.ID_Item, b.Name

    la distinct non dovrebbe funzionare. b.Name nel caso di lingua inglese ed italiana ti tira fuori valori diversi e quindi la distinct non discrimina.
    Probabilmente la soluzione l'hai trovata modificando la query

  7. #7
    Non so... B.Name praticamente sempre mi tira fuori valori diversi e quindi il problema non si poneva, ma c'era quando il nome italiano ed inglese corrispondevano.

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