
Whiz-zarD
-
Gesamte Inhalte
2083 -
Benutzer seit
-
Letzter Besuch
-
Tagessiege
51
Reputationsaktivitäten
-
Whiz-zarD hat eine Reaktion von SuperMarios erhalten in Frage zu SQL-Aufgabe WHERE Datumsangaben
SELECT ... FROM ... WHERE AufnahmeDatum < DATE '2020-03-01' AND EntlassDatum > DATE '2020-02-01' Es werden die weggefiltert, die nach dem Februar 2020 aufgenommen und die, die vor dem Februar 2020 entlassen worden sind. Übrig bleiben die, die in den Betten lagen.
Wenn es mit DATE nicht gemacht werden darf:
SELECT ... FROM ... WHERE (MONTH(AufnahmeDatum) < 3 AND YEAR(AufnahmeDatum) = 2020) AND (MONTH(EntlassDatum) >= 2 AND YEAR(EntlassDatum) = 2020)
-
Whiz-zarD hat eine Reaktion von SuperMarios erhalten in Frage zu SQL-Aufgabe WHERE Datumsangaben
Stimmt. 😅
Auch das stimmt. Bin zu sehr Oracle geschädigt. Da schreibt man es mit DATE. 😅
-
Whiz-zarD hat eine Reaktion von SuperMarios erhalten in Frage zu SQL-Aufgabe WHERE Datumsangaben
Letzendlich ist alles eine Zahl.
Ich bin mir jetzt nicht so ganz sicher, ob es zum SQL-Standard gehört aber für gewöhnlich verwenden die RDBMS das ISO 8601-Fomat. Also YYYY-MM-DD. Für andere Formate muss man eine Konvertierung vornehmen. In Oracle DB z.B. die TO_DATE()-Funktion.
Wie das jetzt in der Abschlussprüfung bewertet wird, kann ich nicht sagen. Ist vermutlich auch unterschiedlich.
-
Whiz-zarD reagierte auf Rienne in Frage zu SQL-Aufgabe WHERE Datumsangaben
Ein kleiner Fehler hat sich noch eingeschlichen: Beim Aufnahmedatum sollte das Jahr kleiner gleich 2020 sein und nicht nur gleich 2020.
Ich glaube DATE benötigt es im klassischen SQL gar nicht. Lediglich die Formatierung muss passen. D.h. die Abfrage müsste lauten:
SELECT ... FROM ... WHERE AufnahmeDatum <'2020-03-01' AND EntlassDatum >= '2020-02-01' Nachzulesen hier: https://www.w3schools.com/sql/sql_dates.asp
-
Whiz-zarD hat eine Reaktion von SuperMarios erhalten in Frage zu SQL-Aufgabe WHERE Datumsangaben
Ist das nicht diese Aufgabe?
-
Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C
Damit behebt man das Problem aber nur bedingt. scanf() scant solange den stdin, bis ein newline gefunden wird. Bei "%c" würde man also jedes Zeichen einzeln zurückgeben. Deswegen erscheit auch der Text zwei Mal, weil im Gegensatz zu Unix Windows ein anderes Vorgehen für new line hat. Wenn man nämlich '1' + Enter eingibt, werden drei Zeichen übertragen: '1', carriage return und new line. Also gibt scanf() zurück '1' zurück und dann carriage return. In deinem Beispiel würde er zwar carriage return ignorieren aber das Problem bestünde weiterhin, wenn der Benutzer z.B. "12" eingibt. Dann wird die Schleife wieder zwei Mal ausgeführt und dementsprechend wird der Text auch zwei Mal ausgewiesen.
Wenn man das Problem in den Griff bekommen möchte, muss man etwas weiter ausholen, denn mit einem scanf() alleine kommt man hier nicht weit. scanf() ist auch nicht unbedingt dafür gedacht, Benutzereingaben entgegenzunehmen, sondern ist fürs Parsing von stdin gedacht. Das Parsing setzt aber schon voraus, dass die Daten in einer Strukturierten Form vorliegen. Das ist aber bei Benutzereingaben nicht der Fall. Die sind sehr willkürlich.
Man könnte jetzt auf die Idee kommen, einfach per scanf() einen string einzulesen anstatt ein einzelnes Zeichen:
char s[1]; scanf("%s", s); printf("%s", s); Dies ist aber nicht vor Speicherüberläufen geschützt. Wenn man jetzt "123" eingibt, würde "123" auch rauskommen, obwohl der String nur ein Zeichen belegt und die anderen beiden außerhalb des Bereiches liegen und somit vollkommen ungeschützt.
Der ideale Weg wäre mit fgets() die stdin in einem Puffer zu lesen und diesen dann zu parsen. fgets() ist nämlich sicher vor Speicherüberläufen. Er stoppt, wenn der Puffer gefüllt ist, new line oder end of file erreicht ist. Jenachdem, was zu erst eintritt.
Hier mal eine Funktion, die sicherstellt, dass der Benutzer auch wirklich nur ein Zeichen eingegeben hat:
int readChar(char *c) { char puffer[10]; char temp[10]; fgets(puffer, sizeof(puffer), stdin); sscanf(puffer, "%s", temp); int length = strlen(temp); if(length == 1) { *c = temp[0]; return 0; } if(length == 0) return -1; if(length > 1) return 1; } Der Rückgabewert ist ein für C typisches Pattern um Fehlermeldungen darzustellen, da es ja keine Exceptions gibt. Bei 0 ist alles in Ordnung. Bei -1 hat der Benutzer nur die Enter-Taste gedrückt und bei 1 wurden zu viele Zeichen eingeben.
Und nein, das hat alles nichts mit irgendwelchen Eigenheiten von C zu tun, sondern C ist eine ist zwar eine Hochsprache aber in einem sehr niedrigen Level und das was man mit anderen Sprachen mit einer Zeile machen kann, muss man hier schon selber schreiben.
-
Whiz-zarD hat eine Reaktion von JustALurker erhalten in Nur auszuwählende Zeichen akzeptieren C
Damit behebt man das Problem aber nur bedingt. scanf() scant solange den stdin, bis ein newline gefunden wird. Bei "%c" würde man also jedes Zeichen einzeln zurückgeben. Deswegen erscheit auch der Text zwei Mal, weil im Gegensatz zu Unix Windows ein anderes Vorgehen für new line hat. Wenn man nämlich '1' + Enter eingibt, werden drei Zeichen übertragen: '1', carriage return und new line. Also gibt scanf() zurück '1' zurück und dann carriage return. In deinem Beispiel würde er zwar carriage return ignorieren aber das Problem bestünde weiterhin, wenn der Benutzer z.B. "12" eingibt. Dann wird die Schleife wieder zwei Mal ausgeführt und dementsprechend wird der Text auch zwei Mal ausgewiesen.
Wenn man das Problem in den Griff bekommen möchte, muss man etwas weiter ausholen, denn mit einem scanf() alleine kommt man hier nicht weit. scanf() ist auch nicht unbedingt dafür gedacht, Benutzereingaben entgegenzunehmen, sondern ist fürs Parsing von stdin gedacht. Das Parsing setzt aber schon voraus, dass die Daten in einer Strukturierten Form vorliegen. Das ist aber bei Benutzereingaben nicht der Fall. Die sind sehr willkürlich.
Man könnte jetzt auf die Idee kommen, einfach per scanf() einen string einzulesen anstatt ein einzelnes Zeichen:
char s[1]; scanf("%s", s); printf("%s", s); Dies ist aber nicht vor Speicherüberläufen geschützt. Wenn man jetzt "123" eingibt, würde "123" auch rauskommen, obwohl der String nur ein Zeichen belegt und die anderen beiden außerhalb des Bereiches liegen und somit vollkommen ungeschützt.
Der ideale Weg wäre mit fgets() die stdin in einem Puffer zu lesen und diesen dann zu parsen. fgets() ist nämlich sicher vor Speicherüberläufen. Er stoppt, wenn der Puffer gefüllt ist, new line oder end of file erreicht ist. Jenachdem, was zu erst eintritt.
Hier mal eine Funktion, die sicherstellt, dass der Benutzer auch wirklich nur ein Zeichen eingegeben hat:
int readChar(char *c) { char puffer[10]; char temp[10]; fgets(puffer, sizeof(puffer), stdin); sscanf(puffer, "%s", temp); int length = strlen(temp); if(length == 1) { *c = temp[0]; return 0; } if(length == 0) return -1; if(length > 1) return 1; } Der Rückgabewert ist ein für C typisches Pattern um Fehlermeldungen darzustellen, da es ja keine Exceptions gibt. Bei 0 ist alles in Ordnung. Bei -1 hat der Benutzer nur die Enter-Taste gedrückt und bei 1 wurden zu viele Zeichen eingeben.
Und nein, das hat alles nichts mit irgendwelchen Eigenheiten von C zu tun, sondern C ist eine ist zwar eine Hochsprache aber in einem sehr niedrigen Level und das was man mit anderen Sprachen mit einer Zeile machen kann, muss man hier schon selber schreiben.
-
Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C
Wozu willst du das Zeichen '1' noch in eine 1 umwandeln? Ich sehe hier keinen Bedarf für.
-
Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C
Ist vielleicht schon zu viel aber man könnte daraus auch Konstante, mittels der #define Direktive machen.
-
Whiz-zarD hat eine Reaktion von JustALurker erhalten in Nur auszuwählende Zeichen akzeptieren C
Wozu willst du das Zeichen '1' noch in eine 1 umwandeln? Ich sehe hier keinen Bedarf für.
-
Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C
Ein char ist intern auch nur ein Zahlenwert, der exakt ein Byte groß ist. Komischer Zufall, wa? Historisch betrachtet ist ein Byte die Menge an Bits, die benötigt werden, um ein Zeichen darzustellen. Mit Hilfe der ASCII-Tabelle weiß die Grafikkarte nun, wie das Zeichen mit dem Wert 98 aussieht. Es ist nämlich ein b. Der Weg geht auch andersrum. Man kann ein Zeichen in Hochkommata setzen und der Compiler wandelt es zurück in eine Zahl. Du kannst dann also z.B.
while (auswahl != 'b') { schreiben und der Compiler macht aus 'b' eine 98. Dasselbe gilt auch für deine if-Abfragen.
Du kannst ja mal folgenden Code testen:
printf("%d", 'b'); Du siehst, als Ergebnis kommt 98 raus.
-
Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C
%i ist aber auch nicht richtig. Ist b eine Zahl?
Was hindert dich, die Eingabe zu machen, diese Eingabe auszuwerten, deine Ausgabe zu machen und dann wieder von vorne anzufangen?
-
Whiz-zarD hat eine Reaktion von Pizzacorgie28 erhalten in Nur auszuwählende Zeichen akzeptieren C
Gibt ja noch mehr als nur Vergleichsoperatoren.
Aber überlege mal, wie grafische Oberflächen funktionieren. Grafische Oberflächen laufen in einer Endlosschleife. Man könnte auch hier das gleiche Prinzip anwenden. Es wird immer wieder die Eingabe eingelesen, verarbeitet und etwas wird ausgegeben. Wie sieht also eine endlosschleife aus und wie müsstest du deinen Code umstrukturieren?
Schaue auch mal dein scanf() an. Vorallem welches Format deine Eingabe haben muss und welche du erlauben möchtest.
-
Whiz-zarD hat eine Reaktion von pr0gg3r erhalten in Klassendiagramm: Komposition/Aggregation
Wenn ich es richtig verstehe, dann haben Fahrzeug und Kunde ein Vertrag. Der Vertrag kann aber ohne Fahrzeug und Kunde existieren. Der Vertrag hat aber eine Rechnung und kann ohne diese Rechnung nicht existieren. Lösche ich also die Rechnung, ist auch der Vertrag weg.
Für mich klingt es aber eher danach, als hätte man die Endpunkte der Rauten vertauscht. So wird eher ein Schuh drauß. Also:
Vertrag hat Fahrzeug und Kunde und Fahrzeug und Kunde können ohne Vertrag existieren.
Zusätzlich hat der Vertrag eine Rechnung aber die Rechnung kann ohne Vertrag nicht existieren. Lösche ich den Vertrag, ist die Rechnung weg.
-
Whiz-zarD hat eine Reaktion von Fortschreitender erhalten in Fettnapf angemessene Ausbildungsvergütung
Ja, anstatt Rosenpickerei zu betreiben und einen Tarifvertrag herauszupicken, der in der eigenen Branche eh nicht gilt, nur um damit ~90 € Brutto im Monat mehr vergütet zu bekommen und dadurch ggf. beim Arbeitgeber negativ aufzufallen und somit sich evtl. seine Übernahmechancen verspielt, sollte man eher ein ruhiges Gespräch mit dem Arbeitgeber suchen und mit ihm über veränderte Lebenssituationen sprechen. Ggf. findet man hier eine Einigung. Man kann sich auch Berufsausbildungsbeihilfe (BAB) bei der Arbeitsagentur beantragen, wenn die Ausbildungsvergütung nicht reichen sollte.
Keine Ahnung, wie andere IHKs dies handhaben aber neben Fachinformatiker bilden wir noch Bürokauffrauen/-männer aus und wir haben die Auflage von der IHK bekommen, dass alle Azubis die gleiche Vergütung bekommen müssen. Damit die Fachinformatiker-Bewerber sich für uns entscheiden, mussten wir die Vergütung erhöhen. Das hatte auch zur Folge, dass wir die Vergütung für die Bürokauffrauen/-männer anpassen mussten. Da entstand eine zusätzliche finanzielle Belastung für das Unternehmen. Also einfach mal die Vergütung anzuheben muss nicht immer funktionieren.
-
Whiz-zarD hat eine Reaktion von Fortschreitender erhalten in Fettnapf angemessene Ausbildungsvergütung
Und der einschlägige Tarifvertrag für dich ist was? Du arbeitest in einer eine Werbeagentur und nicht in einem Elektro- oder Metall-Betrieb. Der IGM-Tarifvertrag gilt hier nicht. Das ist ja der Witz an deinem Gerichtsurteil. Der ist hier nutzlos, da es sich bei dem Urteil um einen Industriemechaniker ging.
-
Whiz-zarD hat eine Reaktion von 0x00 erhalten in IHK - Bewertungskriterium bei SQL-Abfragen
So funktioniert das nicht.
Der Witz ist ja, dass man möchte, dass die Datenbank dies herausfinden soll und nicht du. Du gibst lediglich der Datenbank mit, welche Kriterien erfüllen sein müssen. Stell dir vor, anstatt nur den vier oder fünf Datensätzen hättest du jetzt 50.000+ Datensätze. Viel Spaß beim Suchen.
-
Whiz-zarD hat eine Reaktion von Bitschnipser erhalten in Anwendungsentwicklung: kein Ausbilder und keine Programmierung
Es gibt kein Bachelor-Diplom... 🙄
-
Whiz-zarD hat eine Reaktion von allesweg erhalten in Anwendungsentwicklung: kein Ausbilder und keine Programmierung
Was immer vergessen wird: Ein Studium ist keine Berufsausbildung...
Studium abgebrochen, FIAE-Ausbildung angefangen und Studium weitergemacht? Und jetzt im öD, obwohl du doch in einer größeren Firma arbeiten wolltest, wegen der besseren Aufstiegschancen und das ist erst ein Jahr her. Aha...
Klingt eher wie Geschichten aus dem Paulanergarten.
-
Whiz-zarD hat eine Reaktion von 0x00 erhalten in Anwendungsentwicklung: kein Ausbilder und keine Programmierung
Was immer vergessen wird: Ein Studium ist keine Berufsausbildung...
Studium abgebrochen, FIAE-Ausbildung angefangen und Studium weitergemacht? Und jetzt im öD, obwohl du doch in einer größeren Firma arbeiten wolltest, wegen der besseren Aufstiegschancen und das ist erst ein Jahr her. Aha...
Klingt eher wie Geschichten aus dem Paulanergarten.
-
Whiz-zarD hat eine Reaktion von tkreutz2 erhalten in PDF-Bücher
https://www.gesetze-im-internet.de/urhg/__60a.html
Danach wird es schwierig. Viele Verlage haben aber auch ein Lizenzprogramm für Schulen.
-
Whiz-zarD hat eine Reaktion von allesweg erhalten in Fettnapf angemessene Ausbildungsvergütung
Und der einschlägige Tarifvertrag für dich ist was? Du arbeitest in einer eine Werbeagentur und nicht in einem Elektro- oder Metall-Betrieb. Der IGM-Tarifvertrag gilt hier nicht. Das ist ja der Witz an deinem Gerichtsurteil. Der ist hier nutzlos, da es sich bei dem Urteil um einen Industriemechaniker ging.
-
Whiz-zarD hat eine Reaktion von maestro impostor erhalten in Fettnapf angemessene Ausbildungsvergütung
Und der einschlägige Tarifvertrag für dich ist was? Du arbeitest in einer eine Werbeagentur und nicht in einem Elektro- oder Metall-Betrieb. Der IGM-Tarifvertrag gilt hier nicht. Das ist ja der Witz an deinem Gerichtsurteil. Der ist hier nutzlos, da es sich bei dem Urteil um einen Industriemechaniker ging.
-
Whiz-zarD hat eine Reaktion von Crescendo erhalten in Fettnapf angemessene Ausbildungsvergütung
Und der einschlägige Tarifvertrag für dich ist was? Du arbeitest in einer eine Werbeagentur und nicht in einem Elektro- oder Metall-Betrieb. Der IGM-Tarifvertrag gilt hier nicht. Das ist ja der Witz an deinem Gerichtsurteil. Der ist hier nutzlos, da es sich bei dem Urteil um einen Industriemechaniker ging.
-
Whiz-zarD hat eine Reaktion von meyjavafan erhalten in Eigenes Offline Entertainment System
Wieso fragst du nicht deine Arbeitskollegen? 🙄