Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

SQL Abfrage benötige euer Fachwissen

Frage Entwicklung Datenbanken

Mitglied: L0c4lh0sT

L0c4lh0sT (Level 1) - Jetzt verbinden

12.11.2009, aktualisiert 14:11 Uhr, 4852 Aufrufe, 15 Kommentare

Servus,

habe hier ein Problem mit einer SQL Abfrage und komme nicht weiter.

Also die Aufgabe:

Wir haben eine SQL Datenbank mit mehreren Tabellen.

Ich soll eine Abfrage gestalten, die mir den Gesamtwert des Buchbestands anzeigt.
Allerdings muss ich das ganze Variabel halten, d.h. wenn wir von einem buch 2,3 oder 5 exemplare haben, muss das mit in das Ergebnis aufgenommen werden.

Hier mal die Frage wie sie in der Aufgabe steht:
Der Gesamtwert des Buchbestandes soll ausgegeben werden

So wir benötigen 2 Tabellen zur auswertung und zwar die Tabelle "buecher" und die Tabelle "buchexemplar".

buecher
- ISBN
- Kaufpreis

buchexemplar
- ISBN
- Exemplarnummer

Wie bekomm ich das hin?
Mit LEFT JOIN die ISBN's verbinden nehme ich an?
Aber wie multipliziere ich den Kaufpreis jedes einzelnen Buches mit seiner Anzahl und rechne das zum schluss zusammen?

Hoffe das ist halbwegs verständlich

MfG
L0c4lh0sT
Mitglied: -ricardo-
12.11.2009 um 10:51 Uhr
Hmm wenn schon dann ein Inner Join der beiden Tabellen, damit auch jedes Exemplar mit auf genommen wird ...

SELECT SUM(Kaufpreis) as Gesamtwert
FROM buecher INNER JOIN buchexemplar ON buecher.isbn=buchexemplar.isbn ...

So in der art dürfte es klappen ...
Bitte warten ..
Mitglied: L0c4lh0sT
12.11.2009 um 10:59 Uhr
So beachtet die Abfrage aber nicht, dass es mehrere Exemplare geben kann.
Und da hapert es ja gerade.
Bitte warten ..
Mitglied: perseues
12.11.2009 um 11:17 Uhr
Hallo,

Du brauchst etwas im Sinne von (ungetestet):

SELECT sum(buecher.kaufpreis*buchexemplar.exemplarnummer) AS Summe
FROM buecher
JOIN buchexemplar
ON buecher.isbn = buchexemplar.isbn;
GO

Grüße p
Bitte warten ..
Mitglied: -ricardo-
12.11.2009 um 11:19 Uhr
buecher
- ISBN
- Kaufpreis

buchexemplar
- ISBN
- Exemplarnummer

ist ja auch nirgendwo ne anzahl mit angegeben oder soooll "Exemplarnummer" die anzahl darstellen... wenn ja dann ist die bezeichnung etwas dumm :D

du kannst auch im sum zwei felder multiplizieren ....
da gibt es aber 1.000.000 beispiele wenn du mal googelst ... also wenn man etwas mit denkt, dann kann man diese auch umsetzten :D

http://www.sql-und-xml.de/server-daten/sql-befehle/

falls du zu faul zum suchen bist ;)
Bitte warten ..
Mitglied: L0c4lh0sT
12.11.2009 um 11:20 Uhr
OK habs jetzt durch viel gefrikkel geschafft.

DIe Abfrage sollte so aussehen:

SELECT SUM(buecher.Kaufpreis * buchexemplar.Exemplarnummer) as GesamtPreis from buecher
Inner Join buchexemplar ON buecher.ISBN = buchexemplar.ISBN
where buecher.ISBN = buchexemplar.ISBN
Bitte warten ..
Mitglied: L0c4lh0sT
12.11.2009 um 11:21 Uhr
Okay doch noch net zu machen^^
Hab noch ne zweite Aufgabe an der ich kläglich scheitere.

Ich soll jetzt alle Bücher anzeigen, die mehr als einen Autor haben.

Dazu benötige ich 3 Tabellen.

buecher
- ISBN
- Titel

buchautor
- ISBN
- AutorenNr

autoren
- AutorenNr
- Vorname
- Nachname

Es sollen also alle Bücher angezeigt werden, die mehr als einen Autor haben.
Die Daten zusammensammeln ist kein Problem.
Aber die Ausgabe bereitet mir schwierigkeiten, da ich nicht weiß wie ich die Abfrage formulieren soll.

Wenn jemand noch ne Idee hat immer her damit
Bitte warten ..
Mitglied: -ricardo-
12.11.2009 um 12:47 Uhr
Dann musst du ja schon eine Abfrage gemacht haben, wenn du die Daten zusammen bekommst?!
Bitte warten ..
Mitglied: L0c4lh0sT
12.11.2009 um 12:50 Uhr
Theoretisch bekomme ich die Daten zusammen^^
Also ich weiß was ich für Werte brauche. Aber leider nicht wie ich das meiner Datenbank sagen soll.
Bitte warten ..
Mitglied: -ricardo-
12.11.2009 um 13:10 Uhr
Sag sie mal mir, weil ich stehe momentan etwas auf dem schlauch :D dann kriegst du vielleicht eine SQL Querry
Bitte warten ..
Mitglied: L0c4lh0sT
12.11.2009 um 13:27 Uhr
Hab jetzt schon ne Abfrage gefunden allerdings eine 2 Teilige. Also 2 mal Select mit drin also etwas unschön.
Wenn jemand möchte kann er das ja zusammenfassen^^

SELECT buecher.ISBN, buecher.Titel, autoren.Vorname, autoren.Nachname From buecher
LEFT JOIN buchautor ON buecher.ISBN = buchautor.ISBN
LEFT JOIN Autoren ON buchautor.AutorenNr = autoren.AutorenNr
Where buchautor.ISBN IN (
SELECT buchautor.ISBN
FROM buchautor
GROUP BY buchautor.ISBN
HAVING Count(1) > '1'
)
ORDER BY buecher.Titel
Bitte warten ..
Mitglied: Biber
13.11.2009 um 17:16 Uhr
Moin L0c4lh0sT,

drei Anmerkungen zu deiner Query.

1. Wenn die Query das richtige Ergebnis liefert, dann ist die "Länge" des formulierten Statements dritt- oder viertrangig.
Wenn überhaupt etwas von Bedeutung ist, dann die gewählten Zugriffspfade, die Performanz--> alles, was du über ein EXPLAIN untersuchen kannst.

2. Ein LEFT JOIN in dem untersuchten Zusammenhang kann nur unnötig Zeit kosten, da (soweit uns bekannt ist) keine RIs definiert sind, die sicherstellen, dass in der Buchautor nur ISBNs und Autorennr'n erfasst sind, die es auch in Buechern und Autoren gibt.
Möglicherweise hast du ja 2000 Bücher in der Buechertabelle und 5000 Autoren in der Autoren-Tabelle, die jeweils nichts miteinander zu tun haben.
Und bei dem, was du betrachtest interessieren nur die echten JOINs (ohne LEFT)

3. Ein HAVING Count(1) > '1' ist Grütze..... eine Anzahl kann niemals einen Zeichenwert "Ziffer 1" ergeben.

Also belass es bei
01.
SELECT buecher.ISBN, buecher.Titel, autoren.Name, autoren.vorname   
02.
FROM buecher, buchautor, autoren 
03.
WHERE buecher.ISBN = buchautor.ISBN 
04.
AND buchautor.autorennr = autoren.autorennr 
05.
AND Buchautor.isbn IN ( 
06.
SELECT buchautor.ISBN 
07.
FROM buchautor 
08.
GROUP BY buchautor.ISBN 
09.
HAVING Count(1) > 1 
10.
11.
ORDER BY buecher.Titel
[ungetestet]

Und wenn du da etwas tunen willst-...
--> dann nur wenn es ein EXPLAIN es nahelegt und nicht weil es mehr 5 Zeilen oder mehr als ein Schlüsselwort SELECT hat.

Grüße
Biber
Bitte warten ..
Mitglied: L0c4lh0sT
14.11.2009 um 01:21 Uhr
Danke für deine, wie immer super exakte antwort! Aber....jetzt kommt's!
Ich habe die aufgabe von meinem Ausbilder bekommen, welcher meint dass es mit einem SELECT sein soll.
Aber wie es geht will er mir nicht erklären...

Also wenn jemand noch ne lösung hat ohne 2. select wäre ich sehr dankbar.
Bitte warten ..
Mitglied: Biber
15.11.2009 um 13:37 Uhr
Moin L0c4lh0sT,

hmmm, soweit meine SQL-Kenntnisse reichen werden zwei SELECTs erforderlich sein, denn um eine Aggregierung (SELECT..GROUP BY) kommst du nicht herum.
Und ein weiteres SELECT muss dieses Ergebnis mit den Detailinfos aus den anderen beiden Tabellen verbinden... alles andere wäre für mich nicht erklärlich.
Von daher bin ich auf die Lösung dieses Rätsels genauso gespannt wie du.

Grüße
Biber
Bitte warten ..
Mitglied: MadMax
15.11.2009 um 20:28 Uhr
Moin,

solche Aufgaben sollte man genau durchlesen: die Autoren sind doch in der Abfrage gar nicht verlangt, sondern nur die Bücher, die mehrere Autoren besitzen. Also kann man die Autorendaten getrost rauslassen und einfach gruppieren, somit reicht ein Select. Da ich hier aber keine Schulaufgaben lösen will, überlasse ich die Ausformulierung der Abfrage dem geneigten Leser

Gruß, Mad Max
Bitte warten ..
Mitglied: L0c4lh0sT
12.02.2010 um 14:09 Uhr
Vielen Dank hab ganz vergessen den Thread als gelöst zu makieren....tja so ist dass wenn einem die User die Bude einrennen^^
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Datenbanken
gelöst SQL-Abfrage - DISTINCT - letztes Datum (3)

Frage von emeriks zum Thema Datenbanken ...

Datenbanken
SUM oder AVG in SQL Abfrage dauert viel zu lange warum? (5)

Frage von samet22 zum Thema Datenbanken ...

Datenbanken
gelöst SQL-Abfrage mit MAX() (9)

Frage von FrAmEr zum Thema Datenbanken ...

Datenbanken
gelöst Schleifen in SQL-Abfrage bei 2 Tabellen (2)

Frage von Aximand zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...