OBS/Adminhilfe/MySQL Aufgaben: Unterschied zwischen den Versionen
Nimz (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Nimz (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
| (Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
| Zeile 67: | Zeile 67: | ||
'''9. Alle Artikel ohne Bestand anzeigen, die von allen Lieferanten nicht mehr lieferbar sind. (Hinweis: ein Artikel kann mehrere Lieferanten haben / Tabelle: ARTIEK)''' | '''9. Alle Artikel ohne Bestand anzeigen, die von allen Lieferanten nicht mehr lieferbar sind. (Hinweis: ein Artikel kann mehrere Lieferanten haben / Tabelle: ARTIEK)''' | ||
''1. Lösung (0, | ''1. Lösung (obs_mysql_bergau_thiel 0,968 sec)'' | ||
<source lang="SQL"> | <source lang="SQL"> | ||
SELECT a.a_nr, a.a_name1, a.a_name2, ek_bemerk FROM artikel as a | SELECT a.a_nr, a.a_name1, a.a_name2, ek_bemerk FROM artikel as a | ||
| Zeile 82: | Zeile 82: | ||
ORDER BY a.a_nr</source> | ORDER BY a.a_nr</source> | ||
''2.Lösung (0, | ''2.Lösung (obs_mysql_bergau_thiel 0,375 sec)'' | ||
<source lang="SQL"> | |||
SELECT a_nr, a_name1, a_name2, a.ek_bemerk | SELECT a_nr, a_name1, a_name2, a.ek_bemerk | ||
FROM (SELECT b.ek_artnr, b.ek_nolieferbar, if(min(b.ek_nolieferbar) > 0, 1, 0) as neu, b.ek_bemerk FROM artiek as b | FROM (SELECT b.ek_artnr, b.ek_nolieferbar, if(min(b.ek_nolieferbar) > 0, 1, 0) as neu, b.ek_bemerk FROM artiek as b | ||
| Zeile 93: | Zeile 93: | ||
AND not isnull(ek_nolieferbar) | AND not isnull(ek_nolieferbar) | ||
AND (a_bestand+a_abestand) = 0 | AND (a_bestand+a_abestand) = 0 | ||
ORDER BY a_nr</source> | ORDER BY a_nr | ||
</source> | |||
''3. Lösung ( | ''3. Lösung (obs_mysql_bergau_thiel 1,265 sec)'' | ||
<source lang="SQL"> | |||
SELECT a_nr, a_name1, a_name2, ek_bemerk FROM artiek as a | SELECT a_nr, a_name1, a_name2, ek_bemerk FROM artiek as a | ||
LEFT JOIN artikel ON a_nr = a.ek_artnr | LEFT JOIN artikel ON a_nr = a.ek_artnr | ||
| Zeile 103: | Zeile 104: | ||
AND (a_bestand+a_abestand) = 0 | AND (a_bestand+a_abestand) = 0 | ||
GROUP BY ek_artnr | GROUP BY ek_artnr | ||
Having min(ek_nolieferbar) > '0'</source> | Having min(ek_nolieferbar) > '0' | ||
</source> | |||
''4. Lösung von Jörn (0, | ''4. Lösung von Jörn (obs_mysql_bergau_thiel 0,235 sec)'' | ||
<source lang="SQL"> | |||
SELECT a_nr, a_name1 FROM artikel | SELECT a_nr, a_name1 FROM artikel | ||
WHERE(SELECT | WHERE(SELECT MIN( ek_nolieferbar) FROM ARTIEK | ||
WHERE a_nr=ek_artnr) = '1' | WHERE a_nr=ek_artnr) = '1' | ||
AND a_inaktiv <> "1" | AND a_inaktiv <> "1" | ||
AND (a_bestand + a_abestand) = 0</source> | AND (a_bestand + a_abestand) = 0 | ||
</source> | |||
''5. Lösung von Nimz (obs_mysql_bergau_thiel 0,141 sec)'' | ''5. Lösung von Nimz (obs_mysql_bergau_thiel 0,141 sec)'' | ||
| Zeile 117: | Zeile 120: | ||
SELECT a_nr, a_name1, a_name2, ek_bemerk | SELECT a_nr, a_name1, a_name2, ek_bemerk | ||
FROM ( | FROM ( | ||
SELECT ek_artnr, ek_bemerk | SELECT ek_artnr, ek_bemerk, MIN(ek_nolieferbar) AS liefbar | ||
FROM artiek | FROM artiek | ||
GROUP BY ek_artnr | GROUP BY ek_artnr | ||
HAVING | HAVING liefbar=1) eknolief | ||
JOIN artikel | JOIN artikel | ||
ON a_nr=ek_artnr | ON a_nr=ek_artnr | ||
Aktuelle Version vom 11. August 2023, 15:44 Uhr
Dies ist eine zugriffsgeschützte Seite.
- System Überwachung
- DEP deaktivieren
- Darstellung unter Windows 7
- Einwahl auf Windows 2000 Server
- Preislisten
- Datenbank Sicherung
- Customize
- Zentrale
- Support Macro
- Service Debug
- Historienprotokoll (Datenänderung OBS)
- Fernwartungsprobleme
- Startparameter
- Fehler beim Kassenabschluss
- Diverse Informationen
- A ras.pbk
- B Command Line Interpreter
- C File Zilla Benutzer XML erzeugen
- D1 OBS_UPDATE.EXE zum OBS Update Server hochladen
- D2 SUPPORT_MACRO zum OBS Update Server hochladen
- H1 Remote Service Protokoll-Übersicht (Alles)
- H Remote ServiceProtokoll-Übersicht
- I Remote Service Commands
- I1 (Admin) Globaler Hinweis für Updates
- J Liste der OBS Updates
- K Angemeldete Service Firmen
- L Systeminformationen einlesen
- M Kundendaten anzeigen
- M1 Kundendatenbankinformationen anzeigen
- N Kundendaten einlesen
- O Kunden-Update Informationen anzeigen
- P Modul Registrierung OBS
- Q App Verwaltung
- S1 Firmen Statistik Protokolle OBS
- S2 Statistik Notfallkassen
SQL Aufgaben
1. Alle Im letzten Jahr erstellten Rechnungen. (Tabelle: RECHSTA)
SELECT * FROM rechsta
WHERE LEFT(a_datum, 4) = year(now())-1
2. Liste der Personen mit der Anzahl an Rechnungen des Vorjahres. (Tabelle: PERSSTA) (Lösung mit JOIN)
SELECT ps_name, count(ps_name) as anzahl FROM perssta
LEFT JOIN rechsta ON ps_nr = a_knr
WHERE year(a_datum) = year(now())-1
GROUP BY ps_name
3. Pro Kunde die Bruttosummen aller Rechnungen.
SELECT ps_nr, ps_name, ps_vorname, sum(a_bbetrag) as bruttosumme FROM perssta
LEFT JOIN rechsta ON ps_nr = a_knr
WHERE not isnull(a_bbetrag)
GROUP BY ps_nr
4. Verkaufsmengen der Artikel, anhand der Rechnungspositionen, absteigend sortiert nach der Verkaufsmenge. (Tabelle: RECHPOS)
SELECT az_artnr, az_bez1, az_bez2, sum(az_menge) as menge FROM rechpos
WHERE az_artnr <> ''
GROUP BY az_artnr
ORDER BY menge DESC
5. Auflistung aller gekauften Artikel mit Gesamtmenge für die Person 102057 (Tabellen: PERSSTA, RECHPOS)
SELECT ps_nr, ps_name, az_artnr, az_bez1, az_bez2, sum(az_menge) FROM perssta
LEFT JOIN rechsta ON ps_nr = a_knr
LEFT JOIN rechpos ON a_nr = az_nr
WHERE ps_nr = '102057' AND az_menge <> 0 AND az_bez1 <> ''
GROUP BY az_bez1
6. Eine Liste aller Warengruppen, mit Anzahl der Artikel und ihrer Verkaufsmengen, im Jahr 2011 und dem letzten Rechnungsdatum(Tabellen: warengr, artikel, rechpos und rechsta)
SELECT wg_nr, wg_name, count(wg_nr) as artikel_anzahl, sum(az_menge) as verkaufsmengen, max(rechsta.a_datum) as letzte_rechnung, az_nr FROM warengr
LEFT JOIN artikel ON wg_nr = a_wgr
LEFT JOIN rechpos ON artikel.a_nr = az_artnr
LEFT JOIN rechsta ON rechsta.a_nr = az_nr
WHERE year(rechsta.a_datum) = '2011'
GROUP BY wg_nr
7. Liste aller Personen - mit Personennummer, Name (Vorname + Nachname in einer Spalte) und der Anzahl der Aufträge - die im ersten Quartal des aktuellen Jahres (Hinweis: Feld a_datum) Aufträge haben. (Neue SQL-Funktionen hierbei: CONCAT und QUARTER)
SELECT ps_nr, concat(ps_vorname, ps_name), count(ps_nr) as aufträge FROM perssta
LEFT JOIN auftrag ON a_knr = ps_nr
WHERE quarter(a_datum) = 1
AND year(a_datum) = year(now())
GROUP BY ps_nr
ORDER BY ps_nr
8. Die Liste von 6. erweitert um die Informationen höchster Auftragswert und durchschnittlicher Auftragswert.(Neue SQL-Funktionen hierbei: AVG und MAX)
SELECT wg_nr, wg_name, count(wg_nr) as artikel_anzahl, sum(az_menge) as verkaufsmengen, max(rechsta.a_datum) as letzte_rechnung, max(a_bbetrag) as höchster_auftragswert, avg(a_bbetrag)as durchschnittlicher_auftragswert FROM warengr
LEFT JOIN artikel ON wg_nr = a_wgr
LEFT JOIN rechpos ON artikel.a_nr = az_artnr
LEFT JOIN rechsta ON rechsta.a_nr = az_nr
WHERE year(rechsta.a_datum) = '2011'
GROUP BY wg_nr
9. Alle Artikel ohne Bestand anzeigen, die von allen Lieferanten nicht mehr lieferbar sind. (Hinweis: ein Artikel kann mehrere Lieferanten haben / Tabelle: ARTIEK)
1. Lösung (obs_mysql_bergau_thiel 0,968 sec)
SELECT a.a_nr, a.a_name1, a.a_name2, ek_bemerk FROM artikel as a
LEFT JOIN (SELECT a_nr, min(ek_nolieferbar) as mini FROM artikel
LEFT JOIN artiek ON a_nr = ek_artnr
GROUP BY a_nr) as b ON b.a_nr = a.a_nr
LEFT JOIN artiek ON a.a_nr = ek_artnr
WHERE ek_nolieferbar = b.mini
AND ek_nolieferbar > '0'
AND A_INAKTIV <> '1'
AND not isnull(ek_nolieferbar)
AND (a_bestand+a_abestand) = 0
GROUP BY a.a_nr
ORDER BY a.a_nr
2.Lösung (obs_mysql_bergau_thiel 0,375 sec)
SELECT a_nr, a_name1, a_name2, a.ek_bemerk
FROM (SELECT b.ek_artnr, b.ek_nolieferbar, if(min(b.ek_nolieferbar) > 0, 1, 0) as neu, b.ek_bemerk FROM artiek as b
GROUP BY b.ek_artnr) as a
LEFT JOIN artikel ON a_nr = a.ek_artnr
WHERE a.neu = a.ek_nolieferbar
AND a.ek_nolieferbar > 0
AND A_INAKTIV <> '1'
AND not isnull(ek_nolieferbar)
AND (a_bestand+a_abestand) = 0
ORDER BY a_nr
3. Lösung (obs_mysql_bergau_thiel 1,265 sec)
SELECT a_nr, a_name1, a_name2, ek_bemerk FROM artiek as a
LEFT JOIN artikel ON a_nr = a.ek_artnr
where A_INAKTIV <> '1'
AND not isnull(ek_nolieferbar)
AND (a_bestand+a_abestand) = 0
GROUP BY ek_artnr
Having min(ek_nolieferbar) > '0'
4. Lösung von Jörn (obs_mysql_bergau_thiel 0,235 sec)
SELECT a_nr, a_name1 FROM artikel
WHERE(SELECT MIN( ek_nolieferbar) FROM ARTIEK
WHERE a_nr=ek_artnr) = '1'
AND a_inaktiv <> "1"
AND (a_bestand + a_abestand) = 0
5. Lösung von Nimz (obs_mysql_bergau_thiel 0,141 sec)
SELECT a_nr, a_name1, a_name2, ek_bemerk
FROM (
SELECT ek_artnr, ek_bemerk, MIN(ek_nolieferbar) AS liefbar
FROM artiek
GROUP BY ek_artnr
HAVING liefbar=1) eknolief
JOIN artikel
ON a_nr=ek_artnr
AND a_inaktiv<>'1'
AND (a_bestand + a_abestand) = 0;