SQL: Mitarbeiter mit größten und kleinsten Gehalt ausgeben. Wie "min" und "max" dranhängen?

Bild 1 - Tabelle - (programmieren, Datenbank, MySQL)

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Es gibt verschiedene Ansätze. Ein einfacher wäre folgender:

SELECT ename, sal, 'min'
FROM emp 
WHERE sal = (SELECT Min(sal) FROM emp)
UNION ALL
SELECT ename, sal, 'max'
FROM emp 
WHERE sal = (SELECT Max(sal) FROM emp)

.

du kannst auch mit order by desc limit 1 und order by asc limit 1 arbeiten . dann hättest du nämlich den datensatz undnicht nur den maximal bzw minimal wert .

Genau! Und wenn der Datensatz zusätzlich geliefert werden soll, kann man beide Ergebnismengen mit UNION verbinden.

1

PHP WHERE-Abfrage mit Text/Textvariablen?

Hallo zusammen,

ich bin gerade dabei, ein PHP-Abfrageskript zu schreiben. Mit einer int-Variablen bzw. einer Zahl funktioniert es auch, allerdings nicht, wenn ich einen Text verwende. Habt ihr eine Idee wie es funktionieren könnte?

So geht es:

<?php

  $pdo = new pdo('mysql:host=localhost;dbname=name', 'user', 'password');
  $sql = "SELECT * FROM Test WHERE age = 14";
  $abfrage = $pdo->query("SELECT * FROM Test");

  foreach ($pdo->query($sql) as $row) {
    echo $row['Vorname']." ".$row['Name']."<br />";
    echo "Alter: ".$row['age']."<br /><br />";
  }
?> 

So nicht:

<?php

  $pdo = new pdo('mysql:host=localhost;dbname=name', 'user', 'password');
  $sql = "SELECT * FROM Test WHERE name = Mustermann";
  $abfrage = $pdo->query("SELECT * FROM Test");

  foreach ($pdo->query($sql) as $row) {
    echo $row['Vorname']." ".$row['Name']."<br />";
    echo "Alter: ".$row['age']."<br /><br />";
  }
?>
...zur Frage

Kennt sich hier jemand mit SQL aus?

SELECT Name, Mitarbeitername, Wertpapierwert FROM Kunde, Wertpapier, Mitarbeiter WHERE Name IN (SELECT Wertpapierwert FROM Wertpapier WHERE Wertpapierwert>=100)

Das ist mein Ansatz, brauche alle Mitarbeiternamen, dazugehörige Kundenamen, welche Kunden mit einem Wertpapierwert von über 100 betreuen.

...zur Frage

SQL: Wie kann man Werte innerhalb einer Spalte miteinander vergleichen?

Bisher habe ich das: select count(id) as anzahl,id from freundschaft group by id;

Wie kann ich die Anzahlen der ID miteinander vergleichen, die ja alle in einer gemeinsamen Spalte liegen, und sobald sie denselben Wert haben, möchte ich die dazu gehörende ID-Nummer nebeneinander in 2 Spalten ausgeben lassen? :/

...zur Frage

Kaskadiertes löschen in MySQL?

Hallo zusammen,

ich habe 2 Tabellen: Person, Student.

Die Tabelle Student besitzt einen Fremdschlüssel auf die Personen Tabelle. Nun möchte ich eine Person löschen und der Student soll dabei ebenso kaskadiert gelöscht werden.

Ich habe es mit "on delete cascade from person where id=1; versucht, jedoch funktioniert es nicht, kann jemand helfen?

...zur Frage

Wie kann ich mit einem(!) SQL-Statement das select Ergebnis aus mehreren Tabellen als eine Tabelle vereinheitlichen und ausgeben?

Hab da mal was von "Union" gelesen. Aber so ganz klar ist mir das nicht. Sind das wilde Schachteln?

...zur Frage

SQL SELECT Berechnung eines Gesammtpreises

Hi,

ich habe ein Problem mit einem SQL SELECT Befehl. Ich glaube ich habe einen Denkfehler und brauche eure Hilfe :)

Problem:

Tabelle Bestellungen 
BestellungsNr (PK), KundenNr
2001              , 1001 
2002              , 1002

Tabelle Bestellpositionen
BestellungsNr (PK), ProduktNr(PK), Menge
2001              , 10001        , 2
2001              , 10021        , 1
2002              , 10001        , 1
2002              , 10021        , 2

Tabelle Produkte
ProduktNr(PK), Preis
10001        , 5.1
10021        , 7.99

Nun möchte ich den Gesamtwert der Bestellung ausgeben. Ich habe nun über INNER JOIN die Tabellen verbunden. Weiß aber nun nicht wie ich das ganze berechnen soll.

Menge * Preis ist Ok. Aber wie bring nun noch die ProduktNr mit rein, damit man weiß welche Menge * Preis genommen werden soll und wie werden dann die anderen Produkt Preise bei einer Bestellung addiert?

Ich hoffe das ist verständlich. Ich möchte also quasi nur die BestellungsNr und den Gesamtwert ausgeben. Der Gesamtwert pro Bestellung soll berechnet werden.

Mein bisheriger Ansatz:

SELECT BestellungsNr, SUM(Gesamtwert) FROM (SELECT (Preis * Menge) AS Gesamtwert FROM Bestellungen 
INNER JOIN Bestellpositionen ON (Bestellungen.BestellungsNr = Bestellpositionen.BestellungsNr)
INNER JOIN Produkte ON (Bestellpositionen.ProduktNr = Produkte.ProduktNr));

Hoffentlich kann mir jemand helfen :)

Gruß

...zur Frage

Was möchtest Du wissen?