Pagina 4 di 5 primaprima ... 2 3 4 5 ultimoultimo
Visualizzazione dei risultati da 31 a 40 su 47

Discussione: query inner join

  1. #31
    niente arrendiamoci davanti l'evidenza. non ce la fa... troppe tabelle... incredibile non avrei mai pensato che una cagata del genere mettesse in crisi mysql.

    All'inizio pensavo fosse una cagata, poi pensavo che lo script fosse sbagliato....alla fine mi rendo conto che non ce la fa :-(( che triste

  2. #32
    le cagate siamo noi
    adesso piero.mac arriva e ti risolve tutto con una query da 5 parole e 0.002 di tempo di esecuzione
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  3. #33
    mmmmmm ma dai se mi hai postato 10 script e nessuno ci riusciva??

    Allora facciamo così:
    ONNIPOTENTE piero.mac AIUTACI TU DIO DEL MYSQL.!!!!

    Speriamo che la mia preghiera raggiunga il destinatario. hehe

  4. #34
    oppure mi passi database con tabelle e contenuti e faccio delle prove in locale, senno' sto qui a postare ogni 2 secondi senza poter testare
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  5. #35
    Originariamente inviato da andr3a
    oppure mi passi database con tabelle e contenuti e faccio delle prove in locale, senno' sto qui a postare ogni 2 secondi senza poter testare


    ho letto qualcosa.... ma non ci ho capito na mazza. Per prima cosa il formato delle date, il range di data che manipola, lo scopo della query, considerando poi che bisogna assegnare un alias al nome dei campi selezionati, altrimenti con lo stesso nome verranno sempre sovrascritti dal successivo.

    Ma giustamente, come hai realizzato senza la struttura delle tabelle ... si potrebbe tentare solo con la "QUERY_LOURDES"


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

  6. #36
    eccomi sono qui per voi.sono andato a mangiare la pappa.

    le tabelle sono 8 e sono tutte state create così

    codice:
    CREATE TABLE `banner` (
      `id` int(10) NOT NULL auto_increment,
      `nome` varchar(255) default NULL,
      `width` int(10) default NULL,
      `height` int(10) default NULL,
      `type` varchar(10) default NULL,
      `testo` text,
      `testo_click` text,
      `url` text,
      `titolo` varchar(50) default NULL,
      `target` varchar(10) default NULL,
      `alt` varchar(50) default NULL,
      `data_inizio` date default NULL,
      `data_fine` date default NULL,
      `tabella` varchar(10) NOT NULL default 'banner2',
      `cod_agenti` varchar(15) default NULL,
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM AUTO_INCREMENT=58 ;
    Bene io devo trovare tra tutte le 8 tabelle la data più alta uguale o minore a tutte.

    un esempio
    tabella 1 con data_fine 2004-11-17
    tabella 2 con data_fine 2004-11-19
    tabella 3 con data_fine 2004-11-25

    ho preso la data maggiore per ogni tabella

    la comune in questo caso è 2004-11-17.
    Le varie tabelle fanno parte di una programmazione di banner che ho inserito nel mio sito, devo praticamente vedere fino a che data ho programmato tutti gli spazi. Nel caso sopra gli spazi sono tutti programmati fino al 2004-11-17 anche se gli altri due sono programmati anche per giorni successivi.
    Io devo vedere però solo la data con programmazione completa, nel caso sopra se fosse 2004-11-19 all'appello mancherebbe tabella1 che è stata programmata solo fino al 17.

    penso di aver detto tutto

  7. #37
    Dovresti fare una tabella di riferimento, che chiamiamo bannerX, che abbia un calendario con cui sia possibile fare un riferimento (calendario = tutte le date). Anche solo una colonna con la data. Altrimenti non hai un riferimanto certo, nel senso che devi scegliere una tabella su cui confrontarti.

    Questo dovrebbere renderti la data max impostata per ogni tabella nel limite della data impostata nell'having. Pero' e' soggetta ai limiti che comporta quanto detto sopra. E' errata la struttura per i dati che vuoi estrarre. Prima ottenevi un prodotto cartesiano delle colonne. n._campi ^num._colonne hai voglia del time out.

    prova a variare il valore della data di having ed il maggiore-uguale-minore per vedere di ottenere quello che cerchi. Io farei una tabella data (bannerX) pero'.
    codice:
    SELECT max(b1.data_fine) d1, max(b2.data_fine) d2, max(b4.data_fine) d4, max(b5.data_fine) d5 .... ecc
    FROM banner1 b1
    LEFT JOIN banner2 b2 ON b2.data_fine = b1.data_fine
    LEFT JOIN banner4 b4 ON b4.data_fine = b1.data_fine
    LEFT JOIN banner5 b5 ON b5.data_fine = b1.data_fine
    
    ... aggiungi gli altri
    
    HAVING d1 >= '2004-11-14'
    Qui il riferimento e' banner1 dovrebbe essere bannerX.


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

  8. #38
    ho capito tutto, ma la tabella come la faccio?
    cioè ho capito che deve contenere una data di riferimento, ma dovrebbe inserire la data più alta presente nelle tabelle??? Oppure ho capito male???

  9. #39
    SELECT MAX( banner.data_fine ) FROM banner LEFT JOIN banner2 ON banner.data_fine = banner2.data_fine LEFT JOIN banner3 ON banner2.data_fine = banner3.data_fine LEFT JOIN banner4 ON banner3.data_fine = banner4.data_fine LEFT JOIN banner5 ON banner4.data_fine = banner5.data_fine LEFT JOIN banner6 ON banner5.data_fine = banner6.data_fine LEFT JOIN banner7 ON banner6.data_fine = banner7.data_fine LEFT JOIN banner8 ON banner7.data_fine = banner8.data_fine


    a me questa funziona ... esempio db e tabelle:

    codice:
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `banner`
    -- 
    
    CREATE TABLE banner (
      id int(10) NOT NULL auto_increment,
      data_fine date NOT NULL default '0000-00-00',
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
    
    -- 
    -- Dumping data for table `banner`
    -- 
    
    INSERT INTO banner (id, data_fine) VALUES (58, '2004-09-10');
    INSERT INTO banner (id, data_fine) VALUES (59, '2004-08-30');
    INSERT INTO banner (id, data_fine) VALUES (60, '2004-07-05');
    INSERT INTO banner (id, data_fine) VALUES (61, '2004-10-02');
    
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `banner2`
    -- 
    
    CREATE TABLE banner2 (
      id int(10) NOT NULL auto_increment,
      data_fine date default NULL,
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
    
    -- 
    -- Dumping data for table `banner2`
    -- 
    
    INSERT INTO banner2 (id, data_fine) VALUES (58, '2004-01-20');
    INSERT INTO banner2 (id, data_fine) VALUES (59, '2004-10-02');
    INSERT INTO banner2 (id, data_fine) VALUES (60, '2004-11-04');
    INSERT INTO banner2 (id, data_fine) VALUES (61, '2004-04-07');
    
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `banner3`
    -- 
    
    CREATE TABLE banner3 (
      id int(10) NOT NULL auto_increment,
      data_fine date default NULL,
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
    
    -- 
    -- Dumping data for table `banner3`
    -- 
    
    INSERT INTO banner3 (id, data_fine) VALUES (58, '2004-12-20');
    INSERT INTO banner3 (id, data_fine) VALUES (59, '2003-11-04');
    INSERT INTO banner3 (id, data_fine) VALUES (60, '2004-10-02');
    INSERT INTO banner3 (id, data_fine) VALUES (61, '2004-05-17');
    
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `banner4`
    -- 
    
    CREATE TABLE banner4 (
      id int(10) NOT NULL auto_increment,
      data_fine date default NULL,
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
    
    -- 
    -- Dumping data for table `banner4`
    -- 
    
    INSERT INTO banner4 (id, data_fine) VALUES (58, '2004-10-02');
    INSERT INTO banner4 (id, data_fine) VALUES (59, '2004-02-28');
    INSERT INTO banner4 (id, data_fine) VALUES (60, '2003-12-31');
    INSERT INTO banner4 (id, data_fine) VALUES (61, '2004-08-20');
    
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `banner5`
    -- 
    
    CREATE TABLE banner5 (
      id int(10) NOT NULL auto_increment,
      data_fine date default NULL,
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
    
    -- 
    -- Dumping data for table `banner5`
    -- 
    
    INSERT INTO banner5 (id, data_fine) VALUES (58, '2004-11-10');
    INSERT INTO banner5 (id, data_fine) VALUES (59, '2004-11-30');
    INSERT INTO banner5 (id, data_fine) VALUES (60, '2004-12-11');
    INSERT INTO banner5 (id, data_fine) VALUES (61, '2004-10-02');
    
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `banner6`
    -- 
    
    CREATE TABLE banner6 (
      id int(10) NOT NULL auto_increment,
      data_fine date default NULL,
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
    
    -- 
    -- Dumping data for table `banner6`
    -- 
    
    INSERT INTO banner6 (id, data_fine) VALUES (58, '2004-11-10');
    INSERT INTO banner6 (id, data_fine) VALUES (59, '2004-11-30');
    INSERT INTO banner6 (id, data_fine) VALUES (60, '2004-10-02');
    INSERT INTO banner6 (id, data_fine) VALUES (61, '2005-01-02');
    
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `banner7`
    -- 
    
    CREATE TABLE banner7 (
      id int(10) NOT NULL auto_increment,
      data_fine date default NULL,
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
    
    -- 
    -- Dumping data for table `banner7`
    -- 
    
    INSERT INTO banner7 (id, data_fine) VALUES (58, '2004-11-10');
    INSERT INTO banner7 (id, data_fine) VALUES (59, '2004-10-02');
    INSERT INTO banner7 (id, data_fine) VALUES (60, '2004-03-09');
    INSERT INTO banner7 (id, data_fine) VALUES (61, '2005-01-02');
    
    -- --------------------------------------------------------
    
    -- 
    -- Table structure for table `banner8`
    -- 
    
    CREATE TABLE banner8 (
      id int(10) NOT NULL auto_increment,
      data_fine date default NULL,
      PRIMARY KEY  (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=62 ;
    
    -- 
    -- Dumping data for table `banner8`
    -- 
    
    INSERT INTO banner8 (id, data_fine) VALUES (58, '2004-10-02');
    INSERT INTO banner8 (id, data_fine) VALUES (59, '2004-10-01');
    INSERT INTO banner8 (id, data_fine) VALUES (60, '2004-03-09');
    INSERT INTO banner8 (id, data_fine) VALUES (61, '2005-01-02');
    risultato query:
    2004-10-02

    qualunque tabella prendo come riferimento iniziale MAX( tabella.data_fine ) il risultato non cambia ...
    Formaldehyde a new Ajax PHP Zero Config Error Debugger

    WebReflection @WebReflection

  10. #40
    si ma hai usato = prova <= perchè io non ho per forza tutte le date uguali, potrei come in esempio scritto prima avere delle zone con banner pianificati per più tempo e altri no.

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.