Visualizzazione dei risultati da 1 a 7 su 7

Discussione: query mysql

  1. #1

    query mysql

    salve io sto realizzando questa query
    SELECT annunci.id AS id, annunci.nome_annuncio AS nome_annuncio FROM annunci,disponibilita
    WHERE annunci.provincia='L\'Aquila' AND annunci.comune='L\'Aquila' AND (disponibilita.id_annuncio = annunci.id AND (disponibilita.data NOT BETWEEN '2010-06-23' AND '2010-06-25')) GROUP BY annunci.id ORDER BY annunci.id DESC LIMIT 0,10 1
    ovviamente la query viene realizzata tra due tabelle annunci e disponibilita.
    il mio scopo è che quando disponibilita.data non è compreso nell'intervallo di date presente nella clausola between venga visualizzato l'annuncio.
    non mi restituisce nessun errore ma non riesco a far apparire l'annuncio.
    graize

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Posta un dump delle due tabelle, possibilmente comprensive di qualche record.

  3. #3
    questa è la query che sto provando
    SELECT SQL_CALC_FOUND_ROWS annunci.id AS id, annunci.nome_annuncio AS nome_annuncio, annunci.tipo_strada AS tipo_strada, annunci.nome_via AS nome_via, annunci.numero AS numero, annunci.codice_postale AS codice_postale, annunci.comune AS comune, annunci.provincia AS provincia, annunci.zona AS zona, annunci.immagine AS immagine, annunci.desc_app_ita AS desc_app_ita, annunci.prezzo_minimo AS prezzo_minimo, annunci.numero_massimo_persone AS numero_massimo_persone, annunci.permanenza_minima AS permanenza_minima, annunci.n_stanze_letto AS n_stanze_letto FROM annunci,disponibilita WHERE annunci.provincia='L\'Aquila' AND annunci.comune='L\'Aquila' AND annunci.id =disponibilita.id_annuncio AND disponibilita.data <> '2010-06-23' GROUP BY annunci.id ORDER BY annunci.id DESC LIMIT 0,1

    dovrebbe visualizzare gli annunci dove non è presente il campo data in disponibilità

  4. #4
    DROP TABLE IF EXISTS `disponibilita`;
    CREATE TABLE `disponibilita` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `id_annuncio` int(10) unsigned NOT NULL,
    `data` date DEFAULT NULL,
    PRIMARY KEY (`id`,`id_annuncio`)
    ) ENGINE=MyISAM AUTO_INCREMENT=397 DEFAULT CHARSET=latin1;

    --
    -- Dumping data for table `disponibilita`
    --

    /*!40000 ALTER TABLE `disponibilita` DISABLE KEYS */;
    INSERT INTO `disponibilita` (`id`,`id_annuncio`,`data`) VALUES
    (346,1,'2010-06-23'),
    (345,1,'2010-06-22'),
    (344,1,'2010-06-21');
    /*!40000 ALTER TABLE `disponibilita` ENABLE KEYS */;

  5. #5
    CREATE TABLE `annunci` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `tipo_strada` int(10) unsigned NOT NULL,
    `nome_via` varchar(45) NOT NULL,
    `numero` varchar(45) DEFAULT NULL,
    `scala` varchar(45) NOT NULL,
    `piano` varchar(5) NOT NULL,
    `porta` varchar(5) NOT NULL,
    `paese` varchar(45) NOT NULL,
    `codice_postale` varchar(10) NOT NULL,
    `regione` varchar(45) NOT NULL,
    `provincia` varchar(45) NOT NULL,
    `comune` varchar(45) DEFAULT NULL,
    `quartiere` varchar(45) NOT NULL,

    PRIMARY KEY (`id`,`id_utenti`) USING BTREE
    ) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=latin1;

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select sql_calc_found_rows annunci.*,disponibilita.* 
    from annunci
    left join disponibilita
    on annunci.id = disponibilita.id_annuncio
    where annunci.provincia="L\\\'Aquila" and annunci.comune="L\\\'Aquila"
    and disponibilita.data <> '2010-06-23'
    se nella tabella L'Aquila è memorizzata col backslash devi farne l'escape.

  7. #7
    in verità ho risolto aggiungendo nella query and (disponibilita.data <> '2010-06-23' OR disponibilita.data IS NULL) anhe se non so se è proprio corretto

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.