Domanda

Im cercando di ottenere la query funziona ma mi da questo errore:Unknown column 'cerniere.citta' in 'clausola having'

`$query = "SELECT
    zips.*
    FROM
    zips
    HAVING
    zips.city LIKE '%$city%' 
    AND
    zips.stateabbr LIKE '%$state%' 
    LIMIT 1";
$result = mysql_query($query) or die (mysql_error());`

il mio cerniere tabella ha una colonna city, così im non sicuro di quello che è il problema, so di accesso al database, perché sono in grado di eseguire questa query senza errori:

$zip1query = "SELECT 
         zips.*
         FROM 
         zips
         WHERE
         zips.zip = '$zip'              
         ";

qualsiasi consiglio sarebbe molto apprezzato!grazie!

È stato utile?

Soluzione

La clausola having non significa la stessa cosa che la clausola where: quando si esegue una query semplice, è necessario utilizzare where - che è quello che avete fatto nella vostra seconda query, che le opere

.

having viene utilizzato quando la condizione deve essere applicata sul risultato di una clausola group by.


Il che significa che, qui, la query dovrebbe essere costruire in questo modo:

$query = "SELECT zips.*
    FROM zips
    where zips.city LIKE '%$city%' 
        AND zips.stateabbr LIKE '%$state%' 
    LIMIT 1";


Con questo, se avete ancora un errore su una colonna non esistente o non-trovati (almeno per city e / o stateabbr) , sarà perché la colonna non esiste nella tua tavolo.

In questo caso, non c'è molto che possiamo fare: si dovrà verificare la struttura della tabella, per determinare le colonne contiene

.

È possibile verificare che la struttura utilizzando uno strumento web-based come phpMyAdmin, oppure utilizzando un'istruzione SQL, ad esempio:

desc zips;


Per riferimento, citando pagina di manuale di MySQL per select :

  

Lo standard SQL richiede che avere   deve fare riferimento solo colonne nella   clausola GROUP BY o colonne utilizzate in   funzioni di aggregazione.
...
  
non utilizzare HAVING per gli elementi che   dovrebbe essere nella clausola WHERE.   
Per esempio, non scrivere il   seguenti:

SELECT col_name FROM tbl_name HAVING col_name > 0;
     

Scrivi questo, invece:

SELECT col_name FROM tbl_name WHERE col_name > 0;
     

...   
  La clausola HAVING può riferirsi a   funzioni di aggregazione che la WHERE   clausola non possono

Altri suggerimenti

Provare a utilizzare WHERE invece di HAVING.

Il modo corretto per farlo è quello di utilizzare una clausola WHERE.

$query = "SELECT
zips.*
FROM
zips
WHERE
zips.city LIKE '%$city%' 
AND
zips.stateabbr LIKE '%$state%' 
LIMIT 1";

si trova a dover utilizzare quando si esegue il raggruppamento, vedere qui per una spiegazione

o Jeez scusate ragazzi ho capito il problema, a quanto pare ho messo uno spazio prima città quando ho chiamato le colonne nel mio tavolo. così ho rinominato la colonna e funziona grazie comunque chaps! ma usando la funzione in cui invece di avere le cose velocità deve up molto, grazie ragazzi!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top