Ausgabe von Datensätze limitieren

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.


SQL:
CREATE DATABASE `bestelldb` DEFAULT CHARACTER SET UTF8 COLLATE utf8_general_ci;

SQL:
CREATE TABLE IF NOT EXISTS `artikel` (
  `anr` int(11) NOT NULL AUTO_INCREMENT,
  `gnr` int(11) NOT NULL,
  `name` varchar(30) DEFAULT NULL,
  `preis` decimal(6,2) DEFAULT NULL,
  PRIMARY KEY (`anr`)
) ;

INSERT INTO `artikel` (`anr`, `gnr`, `name`, `preis`) VALUES
(1, 2, 'Stehlampe', '19.90'),
(2, 2, 'Tischlampe', '14.90'),
(3, 2, 'Klemmlampe', '9.90'),
(4, 2, 'Gl', '1.50'),
(5, 2, 'Gl', '1.65'),
(8, 3, 'Hammer 500g', '4.90'),
(9, 3, 'Hammer 1000g', '8.90'),
(10, 3, 'Zimmermannssäge', '34.90'),
(11, 3, 'Metalls', '9.90'),
(12, 3, 'Kneifzange', '7.50'),
(13, 4, 'Dispersion 5k', '12.30'),
(14, 4, 'Dispersion 12k', '22.30'),
(15, 4, 'Leimfarbe 1k', '4.30'),
(16, 4, 'Kleister', '1.50'),
(17, 4, 'Tapete 5m', '5.00'),
(18, 5, 'Tischlerplatte 1600x800x30', '139.90'),
(19, 5, 'Kiefernbrett 1600x200x20', '3.50'),
(20, 5, 'Kiefernbrett 1800x200x20', '4.50'),
(21, 5, 'Kiefernbrett 2000x200x20', '5.50');

Was ich hin bekommen habe ist dieses:

SQL:
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
 
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.
 
SQL:
SELECT
  a.name AS Artikelbezeichnung,
  a.preis AS Preis
FROM artikel a
WHERE a.gnr IN (4, 5)
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`
 
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
 
Du suchst OR statt AND.
Zeilen, wo gnr entweder 4 oder 5 ist, nicht beides gleichzeitig in der selben Zeile
 
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.
 

Neue Beiträge

Zurück