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.