WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 15.10.2004, 14:56   #1
rem996
Veteran
 
Registriert seit: 16.08.2001
Alter: 44
Beiträge: 293


rem996 eine Nachricht über ICQ schicken
Standard sql-frage spalten selektieren

hi!

ich hätt da ein paar fragen zu sql, bin mir nicht sicher ob das mit sql überhaupt geht, drum frag ich lieber vorher nach :P

1. frage
ok, also ich habe 2 tabellen, in der einen stehen personen-infos mit einem eindeutigen key. der key ist mit einer anderen tabelle verbunden in der eigenschaften der person als spalten aufgeführt sind. das heisst zu jeder person x in table 1 besteht genau 1 zeile in table 2. die werte sind einfache true/false flags.

mir ist klar dass ich zu jeder person die ganzen werte ausgeben kann, aber kann ich z.b. nur alle spalten für eine person ausgeben in denen der wert 'true' ist?? geht das über die columns?

2. frage
wenn ich die werte (spaltennamen in table2) kategorisieren möchte, hab ich mir überlegt eine dritte tabelle zu erstellen in der die kategorien hinterlegt sind, beispielsweise ich verknüpfe den spaltennamen Applikationsentwickler mit der kategorie IT-Ausbildung. Nun möchte ich bsp-weise für eine person alle fähigkeiten für diese kategorie auslesen, also nehme ich alle spaltennamen in der table 3 über eine id bsp und müsste dann die werte der spalten mit diesem namen aus table 2 auslesen....
ich weiss das es geht mit dynamic sql oder auch plsql. mit normalem sql geht das nicht oder?

wäre dankbar für eine kurze antwort.. (kürzer als meine problembeschreibung)

thx
rem996 ist offline   Mit Zitat antworten
Alt 15.10.2004, 19:02   #2
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

ad 1.)
d.h. du hast sowas:
--------
Tabelle1
--------
id|name
00|1.Name
01|2.Name
02|usw

--------
Tabelle2
--------
id|a|b|c|d|e|f
00|0|1|0|1|0|0
01|1|1|0|0|0|1
usw.
Oder ist es ganz anders?
Wenn du das obige hast: Warum hast du's dann überhaupt in zwei verschiedenen Tabellen?
AFAIK kannst du nicht nur Spalten anzeigen die true sind. Da du dir das Ergebniss deines Selects aber vermutlich nicht auf der Kommandozeile anschaust sondern irgendwie weiterverarbeitest, würd' ich das dann im Programm lösen.

ad2.)
AFAIK auch nicht, du könntest aber statt der dritten Tabelle mit den Kategorien einen VIEW anlegen. MySQL kann das aber noch nicht (für 5.1 geplant). Ansonsten siehe 1.) also erstmal alles abfragen und dann im Programm nur die entsprechenden Spalten anzeigen.

Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 16.10.2004, 12:55   #3
rem996
Veteran
 
Registriert seit: 16.08.2001
Alter: 44
Beiträge: 293


rem996 eine Nachricht über ICQ schicken
Standard

hallo jak!

jo, genauso siehts aus, ich weiss schon, dass ich das alles in eine tabelle zusammenziehen kann. nur hab ich dann ein table mit 300 spalten

hab mir schon gedacht, dass das nicht wirklich geht, naja ich werds wahrscheinlich eh nur für einfache selects und reports brauchen also krieg ich das schon hin.

danke!
rem996 ist offline   Mit Zitat antworten
Alt 16.10.2004, 15:24   #4
JackLemon
Senior Member
 
Registriert seit: 02.11.2002
Beiträge: 179


Standard

wenn bei einer tabelle die daten in die breite gehen wie bei dir, und nicht in die tiefe (also x- statt y-achse), dann ist schlicht und einfach das datenbank-desing falsch.

soetwas kann man _immer_ auf der y-achse lösen. du kannst (= vereinfachtes beispiel) eine tabelle mit ID und skill machen (id: 1/skill: programmieren, id: 2/skill: office, ...) und sie mit einer n:n verknüpfung (über eine zwischentabelle mit personId -> skillId) verbinden.

nie in die breite gehen wenn's - so wie bei dir - nicht notwendig ist. und: dann kannst du auch ganz einfach alle true-spalten anzeigen, musst nur in der n:n-tabelle nach personenId filtern und mit der skill-tabelle joinen - voilà!
____________________________________
It\'s not a bug... It\'s a feature!

You know, the main advantage of encrypted paella over ordinary paella is that nobody but you knows what you are eating... (Alvaro)
JackLemon ist offline   Mit Zitat antworten
Alt 18.10.2004, 12:50   #5
rem996
Veteran
 
Registriert seit: 16.08.2001
Alter: 44
Beiträge: 293


rem996 eine Nachricht über ICQ schicken
Standard

danke für deinen comment

ich weiss selber dass das design falsch ist, ich hab selber genug mit dbs zu tun gehabt. nur muss ich in 2 tagen eine db über access erstellen, also mach ich ein schema wie du gesagt hast.

ich hatte 3 tabellen, 1 mit person, zweite mit den skills pro person und die dritte mit angaben zum skill, sowie gruppierung der skills...

nur muss ich das schema über access in formularen darstellen können und da ich mich mit diesem sche*** ned auskenne, hab ich 2 tage rumgewurschtelt und am schluss alles über den haufen geworfen, weil ich den formularzugriff auf mein ursprüngliches design ned hingekriegt hab (vielleicht mit der zeit, aber nicht innerhalb von 2 tagen)

darum ist das falsche db-design rausgekommen, ned weil ich's nicht anders machen hätte können

abr trotzdem danke für den beitrag
rem996 ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:08 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag