Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    67

    [sql] problema con una select

    Salve a tutti

    Vorrei esporre un problema che reputo strano, ma che ovviamente avrà dei motivi.

    Ho una variabile che ovviamente altro non è che un mysql_query:

    codice:
    $variabile=mysql_query("SELECT * from nome_tabella where condizione1='condizione'1 and condizione2<='condizione2'");
    Per farvi comprendere meglio, le condizioni sono entrambi numeri.

    Con questa query, io vorrei estrarre dalla tabella in questione tutti quei risultati che hanno come numero della condizione1 = 12 e come numero della condizione 2 i risultati MINORI o PARI a dieci. Pertanto:

    codice:
    $variabile=mysql_query("SELECT * abiti where disponibile='12' and quantita<='10' order by quantita");
    Andando al sodo del mio problema...... Se cerco i risultati che abbiano quantita<='10' mi da solamente 2 risultati (che rispecchiano ovviamente le condizioni, ma per intenderci i risultati sono molto di più). Se scrivo però al posto di 10 altri numeri al di sotto di questo (9,8,7,6,5,4,3,2,1) l'estrazione dei dati mi viene in modo corretto, e preleva tutto ciò che sta sotto quel dato numero.

    Il problema mi viene dato con i numeri a due cifre, per intenderci..

    Qualcuno sà offrirmi una spiegazione oppure spiegarmi dove sto sbagliando?



    Grazie in anticipo

  2. #2
    Se il formato data corrispondente alle colonne disponibile e quantita è numerico non devi mettere gli apici:

    codice:
    ...
    $variabile = mysql_query("SELECT * abiti where disponibile = 12 and quantita <= 10 order by quantita");
    ...
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Qual'e' il valore che ti trova con quantita<='10'?

    Bisognerebbe poi vedere anche la struttura della tabella e come "realmente" esegui la ricerca. Nei tuoi esempi ci sono errori forse dovuti alla trascrizione ma anche una tua affermazione lascia perplessi:

    Ho una variabile che ovviamente altro non è che un mysql_query:
    che vuoi dire?

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

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    67
    Ciao! Grazie per la tua risposta..

    Per quanto riguarda la cit.:

    "Ho una variabile che ovviamente altro non è che un mysql_query:"

    era semplicemente l'introduzione al mio discorso Forse mi sono espressa male.

    In "secundis", metto la struttura di tale tabella chiedendo scusa per non averlo fatto subito:

    negozio
    id (int 11 primary auto_inc)
    tipo (varchar 25)
    nome (varchar 40)
    descrizione (longtext)
    oro (varchar 30)
    argento (varchar 30)
    bronzo (varchar 30)
    usura (char 3)
    immagine (varchar 50)
    quantita (varchar 50)
    livello (varchar 25) ***
    luogo (varchar 12) ***
    equip (int 1)

    mysql_query("SELECT * from negozio where luogo='12' and livello<='10' order by livello");

    Infine, i risultati che mi stampa con il 10, sono quelli cui valore di luogo è uguale a 12, e valore di livello è 1 o 2 ...

    Dunque tecnicamente una ricerca corretta, ma a rispecchiare quei valori sono molto più risultati... Cosa che, come ho già detto, non accade scrivendo 9 al posto di 10..

    Grazie mille per l'attenzione

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    67
    Ops.. non avevo letto la prima risposta..!

    Ho rimosso gli apici e funziona tutto Grazie mille, perdonate l'ingoranza Risolto!!

  6. #6
    Originariamente inviato da Harriet
    Ops.. non avevo letto la prima risposta..!

    Ho rimosso gli apici e funziona tutto Grazie mille, perdonate l'ingoranza Risolto!!
    risolto....

    ma hai una bella incongruenza sempre che non sia un errore di trascrizione:

    quantita (varchar 50)
    livello (varchar 25) ***
    luogo (varchar 12) ***

    secondo te questi sono campi numerici?

    Ovvio che se cerchi in un campo varchar <= 10 dal 2 al 9 saranno tutti valori superiori.

    Se usi numeri metti campi numerici.

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

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2010
    Messaggi
    67
    Hai ragione ma in realtà avevo necessità di metterli così in quanto non ci sono solo valori numerici..

    In alcune parti di codice, ho avuto necessità di creare degli if che, in tal senso, mi modificano il contenuto della condizione della select a seconda del mio "bisogno"..

    if($papero == "papero")
    {
    $livello="paperino"
    } else {
    $livello="12"
    }

    per intenderci, solo questo
    Hai eventualmente qualche suggerimento che possa essere maggiormente corretto? Grazie mille!

  8. #8
    Bisognerebbe conoscere il progetto. Diciamo che in un campo "misto" di numeri e stringhe dove ovviamente si intende record misti e non contenuto del record misto, la ricerca dovrebbe essere strettamente ascii e non numerica. Il fatto di non mettere le apici ai numeri provoca un cast automatico del valore da ascii a numerico ma non funzionera' sempre con tutte le configurazioni di mysql.

    Diciamo invece che non mi convince affatto la struttura del tuo db.

    Oro, argento, bronzo non mi paiono degni di essere dichiarati campi mi paiono piu' attributi, hai gia' un campo descrizione ed uno tipo, il livello o e' testo oppure numerico oppure un id che indica una tabella di livelli, luogo = 12 presume un riferimento ad altra tabella di luoghi ma perche' varchar? Oppure sai tu in modo mnemonico a cosa si riferisce luogo = 12? Quantita' non lascia scampo ad essere numerico a meno che tu non utilizzi molto, poco, abbondante etc.... Equip int(1) se vale 1 o 0 allora usa tinyint con un solo byte invece di 4.

    Tanto pour parler.... mentre aspetto una persona. Bisognerebbe conoscere il progetto, i dati a disposizione, come pensi di inserirli (chi inserisce) e cosa vorresti ottenere da questi dati.

    that's all....

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