SQL hilfe?

3 Antworten

2. C)

Da steht "enthält".
Dein Ergebnis prüft, ob die Beschreibung exakt "Sommerfest" ist.
Wenn die Beschreibung in der Datenbank z.B. "Schönes Sommerfest" ist, würde dein SQL es nicht finden, laut Aufgabenstellung müsste es aber gefunden werden.

Außerdem verhalten die SQL-Dialekte sich anders, wenn es um Strings geht. Ich arbeite mit dem SQL-Server und der will für einen String einfache Anführungszeichen, keine zweifachen Anführungszeichen, wie Du sie verwendet hast.

Da Du es bei 2. D) anders geschrieben hast, gehe ich von einem simplen Schreibfehler hier in der Frage aus, aber erwähnen schadet trotzdem nicht.

Richtig (für den SQL-Server) wäre also:

SELECT *
FROM tabelle
WHERE beschreibung LIKE '%Sommerfest%'

2. D)

Das "IS" ist nicht optional, das muss weg.VIELLEICHT gibt es Unterschiede zwischen den SQL-Dialekten und irgendein Dialekt erlaubt das "is" vor "BEWTEEN", gesehen habe ich es aber noch nicht (oder ich erinnere mich nicht daran).

Vielleicht braucht irgendein DBMS auch eine Konvertierung in den verwendeten Datum-Datentyp, aber dem SQL-Server reicht der String, solange das Format korrekt ist.

Richtig wäre also:

SELECT *
FROM tabelle
WHERE ereignis_datum BETWEEN '2023-01-01' AND '2023-12-31'

PS:

Gewöhn dir für die Zukunft eine gewisse Struktur und Schreibweise an :)
SQL ist nicht gerade die Krönung der Übersichtlichkeit, daher solltest Du es dir möglichst einfach machen, besonders wenn später noch komplexere Geschichten dazu kommen.

Ich schreib z.B. gerne so:

SELECT tabelle.*,
    other_table.whatever_a AS other_a,
    other_table.whatever_b AS other_b
FROM tabelle
    LEFT JOIN other_table ON other_table.Id = tabelle.other_id
WHERE ereignis_datum BETWEEN '2023-01-01' AND '2023-12-31'
    AND other_column > 15

Siehst Du, was ich meine?

Auf diese Weise kann ich auch sehr komplexe SQL-Skripte übersichtlich gestalten und das ist bei mir auch wichtig, insbesondere, wenn ich manchmal in einer Live-Datenbank Daten aufräumen "darf", wo ein Fehler schnell ... schmerzhaft werden kann ^^

Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler

Zu 2C. Wenn man die Aufgabenstellung wörtlich nimmt (was man ja meist sollte) dann ist deine Abfrage falsch

select * from tabelle where beschreibung = "Sommerfest"

... Findet nur Einträge bei denen Beschreibung exakt = Sommerfest ist. Aufgabe war aber alle Einträge wo das Wort Sommerfest drin vorkommt. Richtig wäre dann:

select * from tabelle where beschreibung like '%Sommerfest%'
Woher ich das weiß:Berufserfahrung – Softwareentwicklung Mobile Apps

2C ist falsch, da die Beschreibung in deinem Select exakt "Sommerfest" sein muss.
Gefragt war aber nach enthalten.

Also

select * from tabelle where beschreibung like '%Sommerfest%'

2D könnte eventuell fehlschlagen, weil du erst zu einem Datum konvertieren musst.

select * from tabelle where ereignis_datum between date '2023-01-01' and date '2023-12-31'