Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 16

Discussione: [sql]

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146

    [sql]

    Ragazzi non ho dei dubbi su delle query sql. Mi sapete aiutare?

    Persona(CodiceP, nomeP, Citta)
    Visita(CodiceP, COdiceL, Anno)
    Localita(COdiceL, nomeL, TIpologia, Provincia)
    Verifica(COdiceL, CodiceM, Anno)
    Maltempo(COdiceM, NOmeM)

    Suppongo sia semplice capire quali sono le chiavi. Cmq sono quelle che iniziano con codice

    Ecco le due odiose query.

    1. Selezionare le persone che nel 2008 hanno visitato una localita di mare nella provincia di siracusa in cui nei vari anni si è verificata una sola volta una tempesta di neve.

    2. Selezionare le persone che hanno visitato almeno due localita tali che, in ciascuna di esse, nei vari anni si sono verificate tutte le tipologie di maltempo.

    Dato che sono uno studente universitario, comprendo solo l'sql standard, non usate sql relativo a oracle o a mysql perfavore

    Grazie a tutti per l'aiuto

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    FOrse mi sto confondendo. Devo considerare semplicemente "una sola volta" come una volta....

    Ora vi posto come l'ho fatta:


    Select P.codicep from persona P, visita V, localita L
    where p.codicep=v.codicep and v.codicel=L.codicel and v.anno=2008 and L.tipologia='mare' and L.Città='Siracusa' and L.codicel IN
    (select L1.codicel
    from localita L1, Verifica VR1, Maltempo M1
    where L1.codicel =VR1.codicel and VR1.codiceM=M1.codicem and M1.NOmeM="tempesta di neve" and L1.Città='Siracusa' and L1.Tipologia='mare'
    )

    Per come ho scritto io si intende almeno una. Per dire solo una devo aggiungere questo nella query esterna?:
    GROUP BY VR1.CodiceM
    HAVING COUNT(VR1.CodiceM)=1

  3. #3

    Re: [sql]

    Originariamente inviato da SQLover
    Ragazzi non ho dei dubbi su delle query sql. Mi sapete aiutare?

    Persona(CodiceP, nomeP, Citta)
    Visita(CodiceP, COdiceL, Anno)
    Localita(COdiceL, nomeL, TIpologia, Provincia)
    Verifica(COdiceL, CodiceM, Anno)
    Maltempo(COdiceM, NOmeM)

    Suppongo sia semplice capire quali sono le chiavi. Cmq sono quelle che iniziano con codice

    Ecco le due odiose query.

    1. Selezionare le persone che nel 2008 hanno visitato una localita di mare nella provincia di siracusa in cui nei vari anni si è verificata una sola volta una tempesta di neve.

    2. Selezionare le persone che hanno visitato almeno due localita tali che, in ciascuna di esse, nei vari anni si sono verificate tutte le tipologie di maltempo.

    Dato che sono uno studente universitario, comprendo solo l'sql standard, non usate sql relativo a oracle o a mysql perfavore

    Grazie a tutti per l'aiuto
    Innanzitutto, buongiorno.
    Ti dò un consiglio, ovvero utilizzare come nome dei campi delle cose comprensibili che ti aiutino a capire effettivamente cosa contiene il campo, in questo modo semplifichi la progettazione e non devi avere una copia dei nomi dei campi per ricordarli quando devi comporre le query. Inoltre io modificherei la tabella visita includendogli ogni dettaglio come 'maltempo' e 'località' in questo modo te esegui prima una query in cui selezioni tutti i codiceP di chi è stato in vacanza a siracusa nell'anno 2008, poi ricavi tramite il codiceP il nome delle persone.
    Da come hai strutturato le tabelle risulta veramente difficile ottenere dei dati che con una migliore disposizione risolvi in un batter d'occhio.
    SELECT `visita`.`codiceP` FROM `visita` WHERE (`visita`.`anno` = '2008' AND `visita`.`Provincia` = `Siracusa`) <--- questo se strutturi le tabelle come ti ho detto io. Inoltre per non fare errori da una tabella all'altra i nomi dei campi li cambierei es. = Persona (codiceP) ; visita (v_codiceP) ;
    Ricorda comunque che tutto cioò che scrivi in più e con più chiarezza va solo a tuo favore.

    Buona giornata.
    editato per aggiungere :
    dimenticavo, ovviamente puoi arricchirla con ORDER BY, ASC/DESC in base a come vuoi che ti vengano forniti i risultati.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Grazie per avermi risposto. Appena incontro il professore glielo faccio sapere! A parte gli scherzi, la progettazione logica non l'ho fatta io, quindi non posso ristrutturare le tabelle come dici tu e non posso usare neanche viste.

    Ho preso sul sito del mio professore delle tracce di compiti vecchi e sto provando a farle.

    Ma sei riuscito a capire quello che ho scritto? Che ne pensi?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Perchè il mio ip esce in chiaro e da te dice collegato? Ma il mio ip lo posso vedere solo io o anche altre persone?

  6. #6
    Originariamente inviato da SQLover
    Grazie per avermi risposto. Appena incontro il professore glielo faccio sapere! A parte gli scherzi, la progettazione logica non l'ho fatta io, quindi non posso ristrutturare le tabelle come dici tu e non posso usare neanche viste.

    Ho preso sul sito del mio professore delle tracce di compiti vecchi e sto provando a farle.

    Ma sei riuscito a capire quello che ho scritto? Che ne pensi?
    Se la query ti funziona non c'è alcun problema. Comunque una buona progettazione comprende anche il db, quindi se tu avessi modo di sistermare la tabella sarebbe meglio. Da quanto dici, intuisco che stai provando a fare gli esercizi di un professore, io ti consiglio di provare a risolvere quel problema su, eventualmente con la query che hai postato te o usandone diverse se ti risulta più comodo, ma perdi in prestazioni e non poco. E infine, magari prova a strutturare un buon database per lo stesso esercizio, cosi mostri al tuo professore (che suppongo abbia fatto a posta un db così complesso) come risolvere un problema simile, e come (ancora meglio) sarebbe possibile prevenirlo.


    Riguardo l'IP non lo possono vedere gli utenti solo te, admin e (credo) mod. Comunque, sugli utenti non ci piove, l'ip è privato ciao ciao. (se hai altre domande sui dati leggiti i documenti del forum o contatta un mod/admin)


  7. #7
    Utente di HTML.it L'avatar di dararag
    Registrato dal
    Jan 2008
    Messaggi
    434
    solo tu, collegato indica semplicemente l'esistenza dell'ip però, non che sia presente sul forum, comunque non mi pare l'argomento del post.
    P.S:ma che razza di professore hai? i nomi ci manca poco che li scriva in arabo
    P.S2:ma nella tabella maltempo, esiste un campo che dica quante volte è accaduto?, in questo caso la prima query è facile:
    Codice PHP:
    $query="SELECT Persona.CodiceP, Persona.NomeP,altri campi FROM Persona,Localita,Verifica,Maltempo,Visita WHERE Maltempo.NomeM = 'tempesta_neve' AND Maltempo.COdiceM = 'Verifica.CodiceM' AND Maltempo.NumeroM = 1 AND Verifica.Anno = 2008
    //e così via, più di così non riesco a resistere, scusa 
    P.S3: giuro che è l'ultimo le query sono difficili solo perchè piene di controlli, ma non puoi farne più di una? così è più comodo.

  8. #8
    P.S:ma che razza di professore hai? i nomi ci manca poco che li scriva in arabo
    LOL, l'ho pensato anche io ma credo sia per dare un'esercizio 'difficile'... almeno speriamo sia così.
    Comunque esatto, è un buon metodo dividere le query.

    Attendo il seguito.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Grazie a entrambi per l'interessamento. Diciamo che il professore è un po particolare. A ricevimento poso fare massimo due domande altrimenti comincia a calargli il latte dalle ginocchia

    Per questa ragione sono obbligato a perdere ore e ore della mia vita sperando che qualche anima pia mi aiuti (questo deve essere il mio giorno fortunato!)

    NON esiste un campo che dica quante volte è accaduto...ma credo si possa risolvere con un count..

    Posso usare query innestate ma fare due query separate no. NOn posso usare le viste.

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    146
    Originariamente inviato da brobobibo
    Se la query ti funziona non c'è alcun problema. Comunque una buona progettazione comprende anche il db, quindi se tu avessi modo di sistermare la tabella sarebbe meglio. Da quanto dici, intuisco che stai provando a fare gli esercizi di un professore, io ti consiglio di provare a risolvere quel problema su, eventualmente con la query che hai postato te o usandone diverse se ti risulta più comodo, ma perdi in prestazioni e non poco. E infine, magari prova a strutturare un buon database per lo stesso esercizio, cosi mostri al tuo professore (che suppongo abbia fatto a posta un db così complesso) come risolvere un problema simile, e come (ancora meglio) sarebbe possibile prevenirlo.



    La traccia non prevede la ristrutturazione del database. Chiede "semplicemente" di sviluppare le query in algebra relazionale e sql. Non ho modo di provare se la query funziona. Cioè, forse potrei, installando nuovamente mysql (maledetot virus...) e creando un database con quelle relazioni. Il problema è che perderei molto tempo. E nella parte relativa alla progettazione delle applicazioni sono combinato male..

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.