Autor
| Nachricht
|
dp.Mordred
Clan Leader
Beiträge: 2834
Dabei seit: 25. Feb 2007 Wohnort: Mülheim an der Ruhr Letzter Login: 05. Sep 2020
|
# 29.07.2009 - 11:15:26 |
Leider keine Berechtigung zitieren |
Dieser Code bringt mir das gewünschte Ergebnis außer der im Anschluß folgenden Spalten:
korrekte Ausgabe
Es sollen also kurz gefasst jeder Mitarbeiter mit dem Datum seines aktuellen Einsatzes ausgegeben werden
Schön, aber wie oben erwähnt hätte ich auch noch gerne ein paar andere spalten in der ausgabe. folgender code bringt alle relevanten spalten, allerdings ohne die eben genannte einschränkung auf den aktuellen einsatz:
relevante Spalten
wie könnte ich da nun vorgehen?
@edit: weil es so schön das design zerreisst nutze ich doch glatt unseren deluxe-nopaste-nerd-dienst inkl. syntax-highlighting
Zuletzt modifiziert von dp.Mordred am 29.07.2009 - 11:25:02
|
|
|
|
dp.Kasper
Clan Leader
Beiträge: 3293
Dabei seit: 03. Nov 2007 Wohnort: Erbach/Donau Letzter Login: 22. Mar 2024
|
# 29.07.2009 - 12:48:54 |
Leider keine Berechtigung zitieren |
Du kannst im FROM-Teil auch ein komplettes SELECT-Statement ablegen (Nested Query):
Code | 1: 2: 3:
| | select a.*, b.datum from personal a,
(select id, max(datum) as datum from personal, auftrag where *blabla* group by id) b
where a.id=b.id |
Bin gerade leider zu faul, alles vollständig niederzuschreiben.
Das DISTINCT ist zumindest in Deinem ersten Statement unnötig, da das durch MAX() und GROUP BY implizit gegeben ist.
Edit: Kannst natürlich auch nen JOIN mit dem Nested Select veranstalten.
Zuletzt modifiziert von dp.Kasper am 29.07.2009 - 12:55:41
|
|
|
|
dp.Mordred
Clan Leader
Beiträge: 2834
Dabei seit: 25. Feb 2007 Wohnort: Mülheim an der Ruhr Letzter Login: 05. Sep 2020
|
# 29.07.2009 - 14:35:12 |
Leider keine Berechtigung zitieren |
oO, ich glaube dein code dürfte es schon bringen. sah eben auch, dass man im select nen subselect einbauen kann - geht wohl überall^^.
bringt das komma im from teil zwischen den tabellen eigentlich nen natural join?
also
Code von Datei FROM auftrag, personal | 1: 2:
| | [/code] synonym zu
[code=FROM auftrag NATURAL JOIN personal] |
?
denn die syntax in in dem hier zu nutzenden editor bzw. die anleitung ist etwas weit vom standard^^
also NATURAL JOIN gibbet gar nicht, INNER JOIN ausschließlich unter verwendung von ON.
Zuletzt modifiziert von dp.Mordred am 29.07.2009 - 14:39:31
|
|
|
|
dp.Kasper
Clan Leader
Beiträge: 3293
Dabei seit: 03. Nov 2007 Wohnort: Erbach/Donau Letzter Login: 22. Mar 2024
|
# 29.07.2009 - 15:00:24 |
Leider keine Berechtigung zitieren |
Der NATRUAL JOIN entspricht einer where-Klausel, in der alle gleichnamigen Spalten verknüpft werden ( where a.id=b.id and a.vorname=b.vorname and...). Gibt's keine gleichnamigen Spalten, wird einfach jeder a-Datensatz mit jedem b-Datensatz verknüpft. Letzteres wäre dann Dein select * from a,b ohne WHERE-Klausel.
Das Vorhandensein der verschiedenen JOIN-Arten bzw. deren Bezeichnung ist in der Tat oftmals sehr DB-spezifisch.
Edit: http://aktuell.de.selfhtm...rtikel/datenbanken/joins/ beschreibt es ganz gut: Im Prinzip läuft's immer nur drauf hinaus, ob man die implizite oder explizite Schreibweise bevorzugt. Mir kommt die implizite mit WHERE-Klausel einfach intuitiver vor.
Zuletzt modifiziert von dp.Kasper am 29.07.2009 - 15:07:20
|
|
|
|
dp.Mordred
Clan Leader
Beiträge: 2834
Dabei seit: 25. Feb 2007 Wohnort: Mülheim an der Ruhr Letzter Login: 05. Sep 2020
|
# 03.08.2009 - 10:16:44 |
Leider keine Berechtigung zitieren |
sodele, parallel arbeiten an der sache auch noch leute im uf
klick
der einfachheit halber nun der letzte stand, welcher im endeffekt nur einen schritt weiter ist als im thread bei uns:
jedenfalls bekomme ich leider folgende fehlermeldung:
allgemienr SQL Fehler:
Token unknown - SELECT - line 19 char 4
hm, ich als halb-noob sehe syntaktisch keine fehler, also klammer zu wenig o.ä.
ebenso sind die bezeichner alle korrekt. lässt dies etwa nur den schluß zu, dass subselects nicht unterstützt werden?
Übrigens: Man kann having nutzen! Sorry, ich hatte es bis dato nur falsch eingesetzt. Falls ihr damit noch Ideen habt....
Aber ich sehe bei Having halt das prob, dass wenn ich mit group by arbeite, ich ja ALLE splaten im SELECT, welche nicht in GROUP BY vorkommen, mit einer Aggregat-Funktion (MAX, MIN etc.) ausstatten muss?! Nur bringt mir das wohl wieder nen falsches Ergebnis
Hier zur Sicherheit nochmal der Code, wie ich ihn eingegeben habe.
nopaste
|
|
|
|
dp.Kasper
Clan Leader
Beiträge: 3293
Dabei seit: 03. Nov 2007 Wohnort: Erbach/Donau Letzter Login: 22. Mar 2024
|
# 03.08.2009 - 10:29:05 |
Leider keine Berechtigung zitieren |
Jo, er scheint das SELECT beim INNER JOIN nicht zu mögen. Müsstest mal die Doku dazu ankucken.
|
|
|
|
dp.Mordred
Clan Leader
Beiträge: 2834
Dabei seit: 25. Feb 2007 Wohnort: Mülheim an der Ruhr Letzter Login: 05. Sep 2020
|
# 03.08.2009 - 11:55:05 |
Leider keine Berechtigung zitieren |
etwas anderes thema:
hm, mit was für nem editor und welche db guckste dir das denn an? haste da was möglichst "ansprcuhsloses"?
ich versuche nämlich momentan mir oracle xe zu installen, aber irgendwie ist es da sehr kompliziert ich will eigentlich nur nen paar tabellen einfügen und darauf abfragen und prozeduren losjagen (möglichst ala oracle)...
topic:
die doku ist äußerst spärlich. subselcts werden da gar nicht erwähnt, having auch nicht.
aber ich habe einfach mal auf doof anstatt SELECT SUBSELECT geschrieben, weil das wohl bei einigen dbms auch möglich ist - siehe da: nun meckert er über den punkt hier:
Code | 1: 2: 3: 4:
| | SUBSELECT
personal[color=#FF0000].[/color]personalnr,
auftrag.auftragnr,
|
die fehlermeldung ist identisch zu der vom SELECT vorher.
|
|
|
|
dp.Kasper
Clan Leader
Beiträge: 3293
Dabei seit: 03. Nov 2007 Wohnort: Erbach/Donau Letzter Login: 22. Mar 2024
|
# 03.08.2009 - 13:12:31 |
Leider keine Berechtigung zitieren |
Ich hab' keinen speziellen Editor o.ä., zumal ich derzeit kaum was mit Datenbanken mache.
Wenn's ums Absetzen von "Standard" SQL geht, würde Dir MySQL oder SQLite reichen. Wenn Du aber die Eigenheiten des jeweiligen SQL-Dialekts benutzt, bringt Dir das ned sonderlich viel.
Zum Fehler: Versuche mal die Tabellen jeweils mit nem eigenen Namen zu belegen (SELECT a.id, b.id FROM tabelle1 a, tabelle2 b). Ich glaub' er dürfte schon beim ersten SELECT personal.personalnr Probleme kriegen, da diese Spalte bzw. deren Herkunft nimmer eindeutig ist. Durch die Joins gibt's z.B. personal.personalnr mehrfach als Spalte.
|
|
|
|
dp.Mordred
Clan Leader
Beiträge: 2834
Dabei seit: 25. Feb 2007 Wohnort: Mülheim an der Ruhr Letzter Login: 05. Sep 2020
|
# 03.08.2009 - 15:40:37 |
Leider keine Berechtigung zitieren |
Zitat von dp.Kasper |
Zum Fehler: Versuche mal die Tabellen jeweils mit nem eigenen Namen zu belegen (SELECT a.id, b.id FROM tabelle1 a, tabelle2 b). Ich glaub' er dürfte schon beim ersten SELECT personal.personalnr Probleme kriegen, da diese Spalte bzw. deren Herkunft nimmer eindeutig ist. Durch die Joins gibt's z.B. personal.personalnr mehrfach als Spalte.
|
|
hm, is das so? weil die einzige stelle, wo sie nicht eindeutig ist, wird doch abgefangen durch "AS innerauftrag"?
ansonsten wird personal.personalnr doch durch diese pseudo-natural-joins immer nur einsplatig/eindeutig angesprochen? oder kannste dein bsp etwas näher ausführen?
puh, jetzt bin ich verwirrt:
aber was ist eigentlich mit innerauftrag.personalnr? ist sie das, was durchs subselect ausgegben wird? weil dann müsste ja in der tat personal.personalnr im ersten SELECT dahingehend umbenannt werden?!
|
|
|
|
dp.Kasper
Clan Leader
Beiträge: 3293
Dabei seit: 03. Nov 2007 Wohnort: Erbach/Donau Letzter Login: 22. Mar 2024
|
# 03.08.2009 - 16:04:29 |
Leider keine Berechtigung zitieren |
Jetzt seh' ich's gerade: Lass mal das AS vor innerauftrag weg - AS gibt's imo nur bei Spalten, bei Tabellen/Subselects wird der neue Name einfach hinten rangestellt
|
|
|
|
dp.Mordred
Clan Leader
Beiträge: 2834
Dabei seit: 25. Feb 2007 Wohnort: Mülheim an der Ruhr Letzter Login: 05. Sep 2020
|
# 03.08.2009 - 19:49:14 |
Leider keine Berechtigung zitieren |
hm probier ich morgen früh aus
|
|
|
|
dp.Mordred
Clan Leader
Beiträge: 2834
Dabei seit: 25. Feb 2007 Wohnort: Mülheim an der Ruhr Letzter Login: 05. Sep 2020
|
# 04.08.2009 - 08:37:10 |
Leider keine Berechtigung zitieren |
ich ralls net - der meint immer noch unknown token - SELECT
könnte man vielleicht sowas machen, wie das subselect als prozedur/funktion abzubilden?
ich lese gerade hier was zur verwendetetn db. ich weiss nur nicht, welche version die hier haben, finde ich vielleicht noch raus. moementan gucke ich mir die 2009er an - embedded sql. dort gibts auch was zu subqueries...
Interbase
Zuletzt modifiziert von dp.Mordred am 04.08.2009 - 09:00:21
|
|
|
|
dp.Kasper
Clan Leader
Beiträge: 3293
Dabei seit: 03. Nov 2007 Wohnort: Erbach/Donau Letzter Login: 22. Mar 2024
|
# 04.08.2009 - 08:58:00 |
Leider keine Berechtigung zitieren |
In Oracle kannst Du sog. Views erstellen - die lassen sich dann wie normale Tables abfragen. Aber das sollte eigentlich auch so funktionieren.
|
|
|
|
dp.Mordred
Clan Leader
Beiträge: 2834
Dabei seit: 25. Feb 2007 Wohnort: Mülheim an der Ruhr Letzter Login: 05. Sep 2020
|
# 04.08.2009 - 09:01:52 |
Leider keine Berechtigung zitieren |
Zitat von dp.Kasper |
In Oracle kannst Du sog. Views erstellen - die lassen sich dann wie normale Tables abfragen. Aber das sollte eigentlich auch so funktionieren.
|
|
hm, ich meine das auch schon probiert zu haben, aber ich werds nach studium der dinge im oben editierten beitrag auch noch probieren...
ah, jetzt weiss ich genau welches rdbms genutzt wird:
SQL Server Version: WI-V1.5.0.4306 Firebird 1.5
GDS32.dll Version: Firebird WI-V6.3.0.4306
firebird version 1,5
Zuletzt modifiziert von dp.Mordred am 04.08.2009 - 09:11:02
|
|
|
|
dp.Kasper
Clan Leader
Beiträge: 3293
Dabei seit: 03. Nov 2007 Wohnort: Erbach/Donau Letzter Login: 22. Mar 2024
|
# 04.08.2009 - 09:52:26 |
Leider keine Berechtigung zitieren |
|
|
|
|