1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Ausgabe von Datensätze limitieren

Dieses Thema im Forum "Relationale Datenbanksysteme" wurde erstellt von soyyo, 6. Januar 2017.

  1. soyyo

    soyyo Grünschnabel

    Frohes neues euch allen....

    sitze hier gerade an meine letzten Aufgabe, und bekomme sie einfach nicht gepacken. Leider.
    Folgende Aufgabenstellung: Ein Sql-Statement erstellen, welches die Spaltenüberschriften "name" und "preis" von der Relation "artikel" bei Ausgabe in "Artikelbezeichnung" und "Preis" ändert, dabei nach name absteigend sortiert. Dieses nur von den Artikelgruppen (gnr) 4 oder 5.


    Code (SQL):
    1. CREATE DATABASE `bestelldb` DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;
    Code (SQL):
    1. CREATE TABLE IF NOT EXISTS `artikel` (
    2.   `anr` INT(11) NOT NULL AUTO_INCREMENT,
    3.   `gnr` INT(11) NOT NULL,
    4.   `name` VARCHAR(30) DEFAULT NULL,
    5.   `preis` DECIMAL(6,2) DEFAULT NULL,
    6.   PRIMARY KEY (`anr`)
    7. ) ;
    8.  
    9. INSERT INTO `artikel` (`anr`, `gnr`, `name`, `preis`) VALUES
    10. (1, 2, 'Stehlampe', '19.90'),
    11. (2, 2, 'Tischlampe', '14.90'),
    12. (3, 2, 'Klemmlampe', '9.90'),
    13. (4, 2, 'Gl', '1.50'),
    14. (5, 2, 'Gl', '1.65'),
    15. (8, 3, 'Hammer 500g', '4.90'),
    16. (9, 3, 'Hammer 1000g', '8.90'),
    17. (10, 3, 'Zimmermannssäge', '34.90'),
    18. (11, 3, 'Metalls', '9.90'),
    19. (12, 3, 'Kneifzange', '7.50'),
    20. (13, 4, 'Dispersion 5k', '12.30'),
    21. (14, 4, 'Dispersion 12k', '22.30'),
    22. (15, 4, 'Leimfarbe 1k', '4.30'),
    23. (16, 4, 'Kleister', '1.50'),
    24. (17, 4, 'Tapete 5m', '5.00'),
    25. (18, 5, 'Tischlerplatte 1600x800x30', '139.90'),
    26. (19, 5, 'Kiefernbrett 1600x200x20', '3.50'),
    27. (20, 5, 'Kiefernbrett 1800x200x20', '4.50'),
    28. (21, 5, 'Kiefernbrett 2000x200x20', '5.50');
    Was ich hin bekommen habe ist dieses:

    Code (SQL):
    1. SELECT name AS Artikelbezeichnung, preis AS Preis FROM artikel ORDER BY name DESC LIMIT ??, 21;
    Das Ergebnis ist aber nicht das gewünschte.
    Keine Ahnung welchen Limit zu setzten. Ob hier überhaupt mit LIMIT oder WHERE.
    Und es soll nur mit EINEM einzigen Statement zu dem Ergebnis wie in der Abbildung führen.

    20170106_024754[1].jpg



    Jemand bitte eine Idee?

    Vielen Dank
     
  2. Yaslaw

    Yaslaw n/a Moderator

    Du brauchst auch kein LIMIT sondern ein WHERE
    http://sqlfiddle.com/#!9/277751/1
    Code (SQL):
    1. SELECT
    2.   a.name AS Artikelbezeichnung,
    3.   a.preis AS Preis
    4. FROM artikel a
    5. WHERE a.gnr IN (4, 5)
     
  3. soyyo

    soyyo Grünschnabel

    Hallo Yaslaw.........

    vielen Dank für deine Mühe. Ich bin hier auch schon am machen und machen, aber nix. Mein Problem ist damit leider immer noch nicht gelöst. Ich bekomme in deinem Statement nicht die Bedingung ORDER BY name DESC.
    Unbenannt-1.png

    l.g.
     
  4. Yaslaw

    Yaslaw n/a Moderator

    Code (SQL):
    1. SELECT
    2.   a.name AS Artikelbezeichnung,
    3.   a.preis AS Preis
    4. FROM artikel a
    5. WHERE a.gnr IN (4, 5)
    6. ORDER BY a.name DESC
    Nachtrag:
    Wer immer das Feld 'Name' benennt hat - Vierteilen und Rädern. Name ist auch eine Eigenschaft und sollte nie als Feldnamen verwendet werden. Darum muss im SQL auch immer die Tabelle oder der Tabellenalias mitgegeben oder der Feldname in ` gesetzt werden.

    a.name
    `name`
     
  5. soyyo

    soyyo Grünschnabel

    Cool......

    vielen Dank. Ich kannte IN nicht. Kommt in meinem Heft auch nicht vor. Ich möchte mich nicht beschweren. Vielen Dank Yaslaw. Geht es auch mit Vergleichoperatoren irgendwie?

    SELECT name AS Artikelbezeichnung, preis AS Preis FROM artikel WHERE gnr = 4 AND gnr = 5 ORDER BY name DESC; - geht nicht. - "Empty set"
    SELECT name AS Artikelbezeichnung, preis AS Preis FROM artikel WHERE gnr = 4 ORDER BY name DESC; - geht , nur ist es dann nicht komplet.

    ich weiss...ich verlange viel
     
  6. sheel

    sheel I love Asm Administrator

    Du suchst OR statt AND.
    Zeilen, wo gnr entweder 4 oder 5 ist, nicht beides gleichzeitig in der selben Zeile
     
  7. soyyo

    soyyo Grünschnabel

    hallo sheel.......

    auch dir vielen Dank. naja....eigentlich versuche ich ein Statement zu formulieren ohne IN welches genau die Ausgabe erzeugt wie auf diesem Bild.

    Unbenannt-1.png

    artikelbezeichnungen aus gnr 4 und 5.

    l.g.
     
  8. Yaslaw

    Yaslaw n/a Moderator

    Eben. OR
    Code (SQL):
    1. WHERE gnr = 4 OR gnr = 5
     
Die Seite wird geladen...