Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297

    Query senza risultati doppi

    Ciao a tutti.
    Mi aiutate con una query sql?
    Io ho due tabelle:

    TB_SPETTACOLI
    id | oggetto | cachet |
    ------------------------
    1 | concerto | 1000 |
    ------------------------
    2 | fiera | 250 |
    ------------------------
    3 | convention | 500 |
    ------------------------


    TB_DATE
    id | data | id_spettacolo |
    -------------------------------
    1 | 10/04/2008 | 1 |
    --------------------------------
    2 | 25/04/2008 | 2 |
    --------------------------------
    3 | 25/04/2008 | 3 |
    --------------------------------
    4 | 26/04/2008 | 3 |
    --------------------------------
    5 | 27/04/2008 | 3 |
    --------------------------------

    Il mio problema e che quando lancio una query di ricerca in cui chiedo di visualizzarmi tutti gli spettacolo compresi tra il 25/04/2008 e il 27/04/2008 mi fa vedere 3 volte lo spettacolo convention visto che è associato a 3 date comprese nel range di ricerca.

    Le ho provate tutte, con distinct e group ny ma proprio non sono riusciata a saltarci fuori.
    Mi date una mano?

    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Select (Distinct id_spettacolo) From TB_DATE Left JOIN TB_Spettacoli ON TB_Spettacoli.ID = TB_Data.id_spettacolo.

    Prova con questo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297
    Ho provato e la query è giusta fintanto che dopo la DISTINCT (a cui ho dovuto togliere le parentesi) non ho messo in visualizzazione oggetto e data spettacolo (a me serve di visualizzarle) e non ho aggiunto ORDER BY TB_DATE.data.
    Ovvero:

    Select Distinct (id_spettacolo), oggetto, data From TB_DATE Left JOIN TB_Spettacoli ON TB_Spettacoli.ID = TB_Data.id_spettacolo ORDER BY TB_DATE.data

    Con ORDER BY mi dice 'la proposizione ORDER BY è in conflitto con DISTINCT'
    Mentre aggiungendo oggetto e data i risultati mi tornano multipli ...

    Come posso fare?

    Anche se usassi la prima query come mi hai detto tu per ricavare gli id_spettacolo e poi ne facessi un'altra per recuperare le proprietà (esempio l'oggetto) dello spettacolo, come faccio a visualizzarli in ordine di data se nella query iniziale non posso mettere l'order by?


  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297
    Proprio nessun aiuto?

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Ero uscito.
    Quindi hai detto che hai provato anche con group by???

    Select id_spettacolo,count(*) from TB_DATE LEFT JOIN TB_Spettacoli ON TB_DATE.id_spettacolo = TB_Spettacoli.ID Group By id_spettacolo

    Questo tidovrebbe tornare per ogni spettacolo il numero di date prendi questo e fai una Join con gli spettacoli.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297
    Più facile a dirsi che a farsi ...
    Scusa l'ignoranza ... la quesry funziona ed ho capito quale risultato ottengo, ma non riesco a mettere in pratica il tuo suggerimento di prendere il numero di date per spettacolo e di fare una Join con gli spettacoli ...

    Mi aiuti ancora?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297
    Non abbandonarmi così ... immagino tu sia impegnato quanto lo sono io, però proprio se non sistemo 'sta query non riesco a finire il lavoro che devo consegnare entro oggi ...

    Grazie ...

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Oltre che lavorare studio e sono andato a lezione non ti ho abbandonato :-)
    Il problema è che hai sbagliato forum dovevi postare su PHP li ti avrebbe aiutato più gente comunque questa query ti restituisce

    Select id_spettacolo,count(*) from TB_DATE LEFT JOIN TB_Spettacoli ON TB_DATE.id_spettacolo = TB_Spettacoli.ID Group By id_spettacolo

    ma se aggiungi la data t da errore???

    Select data,id_spettacolo,count(*) from TB_DATE LEFT JOIN TB_Spettacoli ON TB_DATE.id_spettacolo = TB_Spettacoli.ID Group By id_spettacolo Order By data

    ????

    Puoi provare anche

    Select * From (Select distinct id_spettacolo from TB_DATE) as T1 Left Join TB_DATE ON T1.id_spettacolo=TB_Date.id_spettacolo Left JOIN TB_Spettacoli ON TB_Date.id_spettacolo=TB_Spettacoli.ID

    Potrebbe funzionare con la sub query selezioni i valori distinti degli spettacoli dalla tabella Date e la chiami T1 poi la unisci alla tabella date stessa per avere le date e poi la unisci alla tab spettacoli per avere le altre info.

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    297
    Grazie per non avermi abbandonato ...
    Dunque ho fatto

    Select data,id_spettacolo,count(*) from TB_DATE LEFT JOIN TB_Spettacoli ON TB_DATE.id_spettacolo = TB_Spettacoli.ID Group By id_spettacolo Order By data

    ma ritorna l'errore impossibile eseguire la query visto che data non è parte della funzione di aggregazione...

    Se aggiungo al Group By data mi visualizza i record doppi !!!

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2006
    Messaggi
    170
    Select * From (Select distinct id_spettacolo from TB_DATE) as T1 Left Join TB_DATE ON T1.id_spettacolo=TB_Date.id_spettacolo Left JOIN TB_Spettacoli ON TB_Date.id_spettacolo=TB_Spettacoli.ID

    Così hai provato???

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.