Avatar billede nic0dk Nybegynder
13. juni 2006 - 17:45 Der er 9 kommentarer og
1 løsning

Hjælp til en længere query

Hej! Jeg sidder med et problem som jeg håber at kunne få en smule hjælp til.
ER diagrammet kan ses neden for, så man kan se sammenhængen mellem tabellerne.

http://www.circle8.dk/er.jpg

Jeg har prøvet at lave en query hvor jeg ville få printet metoden ud med de rigtige metode parametre og hvis det var en constructor metode så ville den så printe constructor parametrene ud osv. Hvordan kan jeg gøre så den kun printer informationer ud én gang(altså at der ikke komme dobbelt information) jeg har forsøgt mig med Cases men synes ikke rigtig jeg har kunne få det til at lykkes, derudover har jeg kigget diverse eksempler igennem på nettet. Håber i kan hjælpe mig ( i behøver ikke give eksempler i cases, bare det er forståeligt).
Avatar billede nic0dk Nybegynder
13. juni 2006 - 22:57 #1
Gerne svar inden torsdag morgen :)
Avatar billede arne_v Ekspert
14. juni 2006 - 03:15 #2
jeg mener at din data model er forkert

det må være

class-1----M-method
class-1----M-constructor
method-1----M-param
constructor-1----M-param
Avatar billede arne_v Ekspert
14. juni 2006 - 03:16 #3
og din query må skulle laves med

(SELECT ... class JOIN constructor JOIN param ...)
UNION
(SELECT ... class JOIN method JOIN param ...)
Avatar billede arne_v Ekspert
14. juni 2006 - 03:18 #4
den sidste krølle at konvertere fra

classname methodnameA paramnameA1
classname methodnameA paramnameA2
classname methodnameB paramnameB1
classname methodnameB paramnameB2

til

classname
    methodnameA
        paramnameA1
        paramnameA2
    methodnameB
        paramnameB1
        paramnameB2

skal du nok lave i din applikation
Avatar billede nic0dk Nybegynder
14. juni 2006 - 08:20 #5
Hej Arne,

i mit diagram har jeg bare ikke lige fået opdateret noget i "Methods", her har jeg lavet en der hedder methodtype, som enten kan være constructor eller method

Og udfra dette vil jeg gerne kunne enten få constructorparameters eller methodparameters
Avatar billede nic0dk Nybegynder
14. juni 2006 - 08:23 #6
Selvfølgelig kunne jeg også bare lave en tabel der hed constructor og forbinde den med constructorparameters :)

Men vil lige prøve med det union i løbet af dagen - og så skrive tilbage.
Avatar billede nic0dk Nybegynder
14. juni 2006 - 23:44 #7
Hej Arne,

nu har jeg ændret i min datamodel og har nu gjort som du har sagt :)

Og har prøvet mig lidt frem med den første kommentar du gav mig, jeg kom frem til følgende (som dog ikke virkede men som jeg håber du kan hjælpe med)

(
SELECT * FROM "Class" c1
JOIN "Constructors" cs
ON c1."class_ID"=cs."class_ID"
JOIN "Constructorparameters" cp
ON cs."constructor_ID"=cp."constructor_ID"
)

UNION

(
SELECT * FROM "Class" c2
JOIN "Methods" m
ON c2."class_ID"=m."class_ID"
JOIN "Methodparameters" mp
ON m."method_ID"=mp."method_ID"
)

Jeg får resultater skrevet ud, men ikke alt det som jeg ønskede mig. Lad mig forklare hvad jeg gerne vil have med et ex.

Jeg har en klasse, Resultat
som har en constructor med parameterne fag (String) og karakter(String) altså: Resultat(String fag, String karakter)

Derudover har den to metoder getFag() og getKarakter()

Derudover har jeg en klasse, Person
med 3 metoder, set(String navn, String cpr), getNavn() og getCpr()

Mit problem er at jeg vil have den til at skrive begge klasser med alt det de har tilknyttet sig, også SELVOM der måske ikke er en constructor (med tilhørende parametre), eller en methodparametere til en relaterede method.

Altså, hvis der er tom data, skal den stadig printe de andre ud.

Hvordan kan dette gøres? Håber du kan give mig et godt svar som jeg rigtig kan få til at virke (da jeg skal aflevere opgaven fredag 16 juni), så sidste dag er i morgen (15juni).
Avatar billede nic0dk Nybegynder
15. juni 2006 - 00:54 #8
Det virker nu.

Fandt en løsning arne kom med et svar så giver jeg dig point
Avatar billede arne_v Ekspert
15. juni 2006 - 01:38 #9
lyder som om du havde brug for LEFT JOIN !
Avatar billede arne_v Ekspert
15. juni 2006 - 01:39 #10
og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester