Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875

    query con join tra 2 tabelle, devo aggiungere un where

    questa e' la query che sto utilizzando:
    Codice PHP:
    select a.ida.albergoa.titoloDATE_FORMAT(a.valida_da'%d/%m') AS valida_da
    DATE_FORMAT(a.valida_fino'%d/%m/%Y') AS valida_finoa.pricea.prezzo_come
    a.arrangiamentoa.nottia.scadenzaa.pacchettob.hotelb.stelleb.comune from offerte a
    albergo b where from_unixtime(scadenza'%Y-%m-%d') >= CURDATE() and stelle '3' and 
    valida_da <= "20120630" and valida_fino >= "20120601" group by id order by price/prezzo_come 
    asc 
    pero' non riesco a filtrarli per le 3 stelle che ho impostato, mi visualizza tutte le offerte in generale.
    Dove sbaglio?

  2. #2
    Di che tipo è la colonna 'stelle' ? Se è di tipo numerico devi togliere gli apici. Inoltre, per correttezza aggiungici anche il riferimento alla tabella.

    codice:
    ... and b.stelle = 3 ...
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    La colonna stelle e' smallint ed ho provato anche come dici tu, ma non ne vuole sapere.
    Questa e' la query completa:
    Codice PHP:
    $_dataInizio "$data_giugno_dal";
    $_dataFine "$data_giugno_al";
    $query=("select a.id, a.albergo, a.titolo, DATE_FORMAT(a.valida_da, '%d/%m') AS valida_da, DATE_FORMAT(a.valida_fino, '%d/%m/%Y') AS valida_fino, a.price, a.prezzo_come, a.arrangiamento, a.notti, a.scadenza, a.pacchetto, b.hotel, b.stelle, b.comune from offerte a, albergo b where from_unixtime(scadenza, '%Y-%m-%d') >= CURDATE() ");
    $colore 1;
    $temp " and ";

    if(isset(
    $_POST['stelle']) && $_POST['stelle']!="0"){
    $query.= $temp"b.stelle = \"$_POST[stelle]\"";
    }

    if(
    $_dataInizio!=""&&$_dataInizio!=null){
        
    $query .= $temp."valida_da <= \"".$_dataFine."\"";
    }
    if(
    $_dataFine!=""&&$_dataFine!=null){
        
    $query .= $temp."valida_fino >= \"".$_dataInizio."\"";
    }

    $query .= " group by id order by price/prezzo_come asc";
    echo
    "$query"

  4. #4
    Gli apici devi toglierli dalla query e NON dall'array $_POST:

    Codice PHP:
    ...
    $query .= $temp."b.stelle = ".$_POST['stelle']; 
    ... 


    P.S.
    A volte fate cascare proprio le braccia però
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    Originariamente inviato da satifal
    Gli apici devi toglierli dalla query e NON dall'array $_POST:

    Codice PHP:
    ...
    $query .= $temp."b.stelle = ".$_POST['stelle']; 
    ... 


    P.S.
    A volte fate cascare proprio le braccia però
    ma veramente non funziona nemmeno se nella query ci metto gia' il numero 3 o 4 (stelle)
    Ho anche provato come dici tu, ma mi mostra tutti i record sempre

  6. #6
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    mi spiego meglio, usando nella query gia' questo valore and b.stelle=\"3\"
    Codice PHP:
    $query="select a.id, a.albergo, a.titolo, DATE_FORMAT(a.valida_da, '%d/%m') AS valida_da,
     DATE_FORMAT(a.valida_fino, '%d/%m/%Y') AS valida_fino, a.price, a.prezzo_come,
     a.arrangiamento, a.notti, a.scadenza, a.pacchetto, b.hotel, b.stelle, b.comune from offerte a, 
    albergo b where from_unixtime(scadenza, '%Y-%m-%d') >= CURDATE() and b.stelle=\"3\" "


  7. #7
    Originariamente inviato da allin81
    mi spiego meglio, usando nella query gia' questo valore and b.stelle=\"3\"
    Codice PHP:
    $query="select a.id, a.albergo, a.titolo, DATE_FORMAT(a.valida_da, '%d/%m') AS valida_da,
     DATE_FORMAT(a.valida_fino, '%d/%m/%Y') AS valida_fino, a.price, a.prezzo_come,
     a.arrangiamento, a.notti, a.scadenza, a.pacchetto, b.hotel, b.stelle, b.comune from offerte a, 
    albergo b where from_unixtime(scadenza, '%Y-%m-%d') >= CURDATE() and b.stelle=\"3\" "

    Perdonami, ma non capisco se ci sei o ci fai!
    Ti ho detto che se stelle è di tipo int NON ci vogliono gli apici. Ti ho anche postato come modificare la query! Cos'è quell'obbrobrio che hai scritto?

    Codice PHP:
    $query="select a.id, a.albergo, a.titolo, DATE_FORMAT(a.valida_da, '%d/%m') AS valida_da,
     DATE_FORMAT(a.valida_fino, '%d/%m/%Y') AS valida_fino, a.price, a.prezzo_come,
     a.arrangiamento, a.notti, a.scadenza, a.pacchetto, b.hotel, b.stelle, b.comune from offerte a, 
    albergo b where from_unixtime(scadenza, '%Y-%m-%d') >= CURDATE() and b.stelle=3"

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it L'avatar di allin81
    Registrato dal
    Mar 2011
    Messaggi
    1,875
    il problema non era negli apici, ho risolto.
    In pratica mancava questo nella query
    Codice PHP:
    and a.albergo b.hotel 
    ora funziona

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.