Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

VerĂśffentlicht

Hallo liebe Fachinformatiker,

Ich hoffe euch geht es den Umständen entsprechend gut und ihr seid alle gesund! :)

 

Wir haben von unserer Berufsschule fßr den Ausfalls des Schulblocks Aufgaben in einigen Fächern bekommen, die wir freiwillig bearbeiten kÜnnen.

Da ich derzeit sowieso im Homeoffice bin und nur lerne, habe ich mich entschieden, die Aufgaben zu bearbeiten. Nun zum Problem:

 

 

Aufgabe lautet: Eine Liste aller Meere und die Anzahl der zugehÜrigen Flßsse

 

Ich komme leider nur bis zu dem Punkt, wo ich alle Meere anzeigen lassen kann, ohne ein Meer doppelt anzuzeigen mit "select distinct(meer) from fluss;"

 

Ich habe versucht, die Aufgabe durch diesen Befehl zu lÜsen: select ((distinct(meer) select count (distinct(name)) from fluss;

Ist zwar falsch, geht es aber in die richtige Richtung? Habt ihr einige Gedankenanstöße für mich?

 

PS: Das ist das erste Mal, dass wir mit Unterabfragen arbeiten, das Thema sollte eigentlich in diesem Block drankommen, deshalb verzeiht mir wenn ich totalen Unsinn schreibe, bin neu in dem Gebiet :)

 

 

Danke im Voraus

Whitehammer03

 

  • Autor

+-----+----------------------+------------------------+--------+
| FNR | Name                 | Meer                   | Laenge |
+-----+----------------------+------------------------+--------+
| AJA | Ajan-Jurjach         | NULL                   |    200 |
| AMA | Amazonas             | Atlantischer Ozean     |   6387 |
| AMU | Amudarja             | NULL                   |   1415 |
| AMR | Amur                 | Ochotskisches Meer     |   2918 |
| ANU | Anuwimi              | NULL                   |    560 |
| ARG | Argun                | NULL                   |   1620 |
| ARK | Arkansas River       | NULL                   |   2334 |
| ATB | Atbara               | NULL                   |   1120 |
| BAD | Bahr al-Jabal        | NULL                   |   NULL |
| BAH | Bahr el-Gazal        | NULL                   |    716 |
| BAN | Bani                 | NULL                   |    430 |
| BAR | Baro                 | NULL                   |   NULL |
| BEN | Benue                | NULL                   |   1400 |
| BIJ | Bija                 | NULL                   |    688 |
| BLA | Blauer Nil           | NULL                   |   1783 |
| BOM | Bomu                 | NULL                   |    280 |
| BUS | Busira               | NULL                   |    830 |
| CHA | Chatanga             | Laptewsee              |   1636 |
| COL | Colorado River       | Pazifischer Ozean      |   2700 |
| COU | Columbia River       | Pazifischer Ozean      |   1952 |
| CON | Connecticut River    | Atlantischer Ozean     |    660 |
| DAL | Dalaelv              | Ostsee                 |    520 |
| DNE | Dnepr                | Schwarzes Meer         |   2201 |
| DON | Don                  | Asowsches Meer         |   1870 |
| DOU | Donau                | Schwarzes Meer         |   2850 |
| DRI | Drin                 | Mittelmeer             |    285 |
| ELB | Elbe                 | Nordsee                |   1144 |
| FUL | Fulda                | NULL                   |    218 |
| GAM | Gambia               | Atlantischer Ozean     |   1120 |
| GAR | Garonne              | Atlantischer Ozean     |    650 |
| GEL | Gelber Fluss         | Gelbes Meer            |   4845 |
| GLO | Glomma               | Nordsee                |    598 |
| GOE | Goetaaelv            | Ostsee                 |     93 |
| GRO | Grosser Jenissej     | NULL                   |    605 |
| HAN | Han                  | Gelbes Meer            |   NULL |
| HUD | Hudson River         | Atlantischer Ozean     |    493 |
| ING | Ingoda               | NULL                   |    708 |
| IRT | Irtysch              | NULL                   |   4248 |
| ISC | Ischim               | NULL                   |   2450 |
| JAN | Jangtse-Kiang        | Ostchinesisches Meer   |   6100 |
| JEN | Jenissej             | Karasee                |   4130 |
| JOE | Joekulsa a Fjoellum  | Europaeisches Nordmeer |    206 |

 

 

 

Hab die Tabelle einfach mal kopiert, hoffe das hilft euch weiter :)

gibt es einen hinweis darauf wie die Daten aussehen?

generell:

hier ist ganz gut erklärt was du mit Subselects alles anstellen kannst: https://www.w3resource.com/sql/subqueries/understanding-sql-subqueries.php

Du mÜchtest die Anzahl von Flßssen aus einer Tabelle mit den Namen der Meere aus einer anderen. Der Grundlegende Aufbau wäre etwa:

SELECT feldliste, (Unterabfrage) FROM tabelle

 

 

 

vor 1 Minute schrieb Whitehammer03:

+-----+----------------------+------------------------+--------+
| FNR | Name                 | Meer                   | Laenge |
+-----+----------------------+------------------------+--------+
| AJA | Ajan-Jurjach         | NULL                   |    200 |
| AMA | Amazonas             | Atlantischer Ozean     |   6387 |
 

in dem Fall hat @Whiz-zarD recht, hier braucht man keine Unterabfragen, das ist mit einem GROUP BY und einem COUNT einfacher zu lÜsen.

  • Autor

Oh okey, danke fĂźr den Hinweis.. da wir uns zuvor eine kleine pdf zu unterabfragen durchlesen mussten, dachte ich, man mĂźsse es auch mit solchen Befehlen lĂśsen..

 

select distinct(meer),count (distinct(name)) from fluss ;

 

So sieht mein Befehl nun aus, ist zwar noch nicht ganz fertig, aber ich denke ich bin auf dem richtigen Weg? :)

 

 

Bearbeitet von Whitehammer03

  • Autor

Durch Distinct lasse ich mir doppelte Datensätze nicht anzeigen, oder liege ich falsch?

 

Aber ich glaube ich habe den Befehl nun :)

select meer,count(name) from fluss group by meer; 

 

jedoch stÜrt mich hier, dass NULL auch in der Spalte Meer angezeigt wird... das mßsste ich noch irgemdwie hinkriegen.. 

Das auch NULL in der Spalte der Meere auftritt ist erstmal korrekt, denn es gibt nach deinen Beispieldaten eben auch FlĂźsse mit meer=NULL. Wenn man die Meere und die Anzahl der in sie mĂźndenden FlĂźsse sucht, kann man das per where ausfiltern.

  • Autor

Hänge nun 3 Aufgaben später wieder fest. :(

Es sollen nur die Meere aufgelistet werden, in die mehr als 5 Flßsse mßnden.

mein Befehl: select meer,count(name) from fluss where count(name) > 5 group by meer;

 

Rein von der Logik her passt das mMn, wahrscheinlich ist einfach nur ne Kleinigkeit an der Formulierung falsch..ich komme aber einfach nicht drauf -.-

  • Autor

Habe es mit Having gelĂśst, klappt! :)

 

Mit Unterabfragen muss ich aber jetzt in der nächsten Aufgabe loslegen, obwohl es theoretisch auch ohne gehen wßrde, jedoch sollen wir hier unterabfragen verwenden.

Aufgabe: Erstellen Sie eine Liste aller Länder in Europa. (Hinweis: Verwenden Sie einen Subselect zur Abfrage des KNR Werts fßr den Kontinent).

Kann man hier ßberhaupt eine Unterabfrage verwenden? Dafßr dßrfte die Abfrage doch nur max 1 Wert ausliefern dßrfen, oder nicht ? Hier wären es ja aber viel mehr als nur 1.

Tabelle:

+------+--------------------------------+------+-----------+----------+----------+
| LNR  | Name                           | KNR  | Einwohner | Flaeche  | HauptONR |
+------+--------------------------------+------+-----------+----------+----------+
| A    | ?Ýsterreich                    | EU   |      8.13 |    83845 | WIEN     |
| AF   | Afghanistan                    | AS   |     25.84 |   647497 | KABUL    |
| AL   | Albanien                       | EU   |      3.49 |    28748 | TIRANA   |
| AN   | Andorra                        | EU   |      0.07 |      468 | ANDORR   |
| AC   | Antigua und Barbuda            | NA   |      0.07 |      442 | SAINTJ   |
| AUS  | Australien                     | AU   |     19.17 |  7686420 | CANBER   |
| B    | Belgien                        | EU   |     10.24 |    30510 | BRUESS   |
| BB   | Barbados                       | NA   |      0.27 |      431 | BRIDGE   |
| UV   | Burkina Faso                   | AF   |     11.95 |   274000 | OUAGAD   |
| BG   | Bulgarien                      | EU   |      8.89 |   110994 | SOFIA    |
| BH   | Belize                         | NA   |      0.17 |   249183 | BELMOP   |
| BHU  | Bhutan                         | AS   |      1.45 |    47000 | THIMBU   |

 

Mit dem Befehl Select Name from land where KNR="EU"; wßrde es gehen.. keine Ahnung warum der Lehrer es so unnÜtig kompliziert machen will ^^ 

 

Bearbeitet von Whitehammer03

  • Autor

select name from land where KNR=(select KNR from land where name="DEUTSCHLAND");

 

wäre dann mein Befehl. Finde ich schwachsinnig, wenn man das auch einfach ohne Unterabfragen lÜsen.. manchmal muss man die Lehrer echt nicht verstehen.. :D aber danke fßr den Tipp

  • Autor
vor 3 Minuten schrieb PVoss:

Steht der ausgeschrieben Kontinent vielleicht noch in einer anderen Tabelle, und der Lehrer mĂśchte, dass du von dort den Namen abfragst?

Normalerweise nimmt man dafĂźr Joins, aber wenn er auf sowas steht...

Nene, das ist die komplette Tabelle, so wie sie dort steht.. find ich auch echt komisch aber naja, wenn er es haben will dann kriegt er es eben :D

vor 21 Minuten schrieb Whitehammer03:

A    | ?Ýsterreich                    | EU   |      8.13 |    83845 | WIEN     |

steht das echt so drin? mit kaputtem Encoding? 😁

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.