Verwirrung beim Query

Kirby.exe

Top Contributor
Also ich habe folgendes Problem: Ich habe eine Datenbank Tabelle "Box", welche eine Lagerbox modelliert. Diese hat die Werte x,y und z um im Raum angeordnet abgebildet zu werden und ebenfalls eine storage_id (Fremdschlüssel auf Storage Tabelle). Nun möchte ich in einem Query gerne alle Boxen welche jeweils die höchsten auf ihrem Stappel sind (also max(z)) und ebenfalls z.B. nur im Storage mit der ID 1 liegen.

Meine Idee war, dass ich ein Temp View erstellen, wo ich alle boxen reinlege welche immer noch eine "höhere" Box haben und somit nicht die Top Box sind. Dann möchte ich in einem anderen Query alle Boxen selecten, welche nicht in dem Unterquery sind mittel NOT EXISTS. Leider bekomme ich schon beim Hilfsview keinen Output in PHPMYADMIN :(

SQL:
CREATE TEMPORARY TABLE temp
    SELECT DISTINCT b2.x, b2.y, b2.z, b2.sort_id, b2.storage_id FROM box b1, box b2
    WHERE b1.x = b2.x
        AND b1.y = b2.y
        AND b1.z > b2.z
        AND b1.storage_id = 1
        AND b2.storage_id = 1;
        
Select * FROM temp;
 

mihe7

Top Contributor
Spontan würde ich sagen:

Höchste Koordinate im Stapel: SELECT storage_id,x,y,max(z) as maxZ FROM box GROUP BY storage_id,x,y;

Box mit höchster Koordinate:
SQL:
SELECT box.*
  FROM box INNER JOIN (
      SELECT storage_id,x,y,max(z) AS maxZ
       FROM box
     GROUP BY storage_id,x,y) coord
  ON box.storage_id=coord.storage_id AND box.x = coord.x AND box.y = coord.y AND box.z = coord.maxZ
und wenn Du nur die storage_id = 1 willst, haust Du halt noch die WHERE-Klausel hintendran.
 

mihe7

Top Contributor
Wow das zeigt mal wieder, dass ich wohl meine SQL Kenntnisse auffrischen sollte xD
Apropos auffrischen: das ist ein Uralt-Standardpattern, das ich seit 20 Jahren verwende, kann sein, dass es da mittlerweile bessere Möglichkeiten gibt :)

Ich lese gerade was von phpmyadmin. MySQL ist z. T. richtig grottig bei der Query-Optimization. Da würde es sich ggf. empfehlen die Einschränkung auf die storage_id schon bzw. zusätzlich innerhalb des Subselects zu machen. Müsstest Du Dir mal im Ausführungsplan anschauen.
 

Oneixee5

Top Contributor
Apropos auffrischen: das ist ein Uralt-Standardpattern, das ich seit 20 Jahren verwende, kann sein, dass es da mittlerweile bessere Möglichkeiten gibt :)

Ich lese gerade was von phpmyadmin. MySQL ist z. T. richtig grottig bei der Query-Optimization. Da würde es sich ggf. empfehlen die Einschränkung auf die storage_id schon bzw. zusätzlich innerhalb des Subselects zu machen. Müsstest Du Dir mal im Ausführungsplan anschauen.
Es stimmt, die Abfrage optimiert sehr schlecht. Diese Self-Join-Subselect-Konstrukte sollte man tunlichst vermeiden. Ich denke man könnte hier sehr gut mit einer Window-Funktion optimieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C kleine verwirrung wegen auto_increment und applikation Datenbankprogrammierung 6
Z Beim schließen des Programms die verbindung zur DB beenden. Datenbankprogrammierung 4
C Oracle Fehler beim list.add() Datenbankprogrammierung 5
L MySQL Bekomme einen Fehler beim ResultSet Datenbankprogrammierung 12
H Brauche Hilfe beim Mappen von 3 Tabellen a 1:n mit hbm.xml. Datenbankprogrammierung 34
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
B JPA->fehler beim Insert in die Datenbank Datenbankprogrammierung 3
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
ruutaiokwu sql server werte swappen beim update-vorgang mit unique-constraints..? Datenbankprogrammierung 2
C H2 Syntax fehler beim erstellen einer Tabelle Datenbankprogrammierung 4
M MySQL probleme beim "Generate Tables from Entities" Datenbankprogrammierung 9
T MySQL Multithreading beim Datenbankzugriff Datenbankprogrammierung 3
T Fehler beim ausgeben von Tabellen Inhalt Datenbankprogrammierung 9
J Datentyp der Spalte beim Datenbankdesign unbekannt Datenbankprogrammierung 12
S Derby/JavaDB Probleme beim anlegen einer embedded DB Datenbankprogrammierung 13
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
N HSQLDB Problem beim Treiberladen im Jar Datenbankprogrammierung 6
M Problem beim Erstellen einer Query Datenbankprogrammierung 7
M Datenbankverbindung zu langsam beim Insert? Datenbankprogrammierung 6
Paristick MSSQL - JDBC Exception beim Registrieren Datenbankprogrammierung 5
D JDBC Fehler beim laden der nativen Bibliothek db2jcct2 Datenbankprogrammierung 9
S Problem beim Anlegen einer Tabelle Datenbankprogrammierung 5
L Derby/JavaDB Fehler beim Erstellen einer Tabelle Datenbankprogrammierung 2
T Problem beim schreiben von daten Datenbankprogrammierung 4
S MySQL generelles vorgehen beim connect zu entfernter datenbank Datenbankprogrammierung 3
A Derby/JavaDB Probleme beim Einbinden Datenbankprogrammierung 2
L CLOB-Daten werden beim Einfügen in die Datenbank geändert? Datenbankprogrammierung 5
J MySQL Hibernate: Probleme beim Speichern von OneToMany - Datensätzen Datenbankprogrammierung 2
X Vector Verhalten beim DataModel seltsam Datenbankprogrammierung 6
D MySQL Problem beim einfügen von Double-Zahlen Datenbankprogrammierung 4
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
N Probleme beim Aufruf aus der DB Datenbankprogrammierung 7
cosmic Problem beim Update einer Oracle DB Datenbankprogrammierung 7
T Problem beim Update in die Access DB Datenbankprogrammierung 9
F SQLException fangen beim verbinden mit Hibernate Datenbankprogrammierung 17
M Problem beim Importieren einer Datenbank Datenbankprogrammierung 3
C Datenumwandlungsfehler beim Umwandeln Datenbankprogrammierung 4
S Fehler beim Auslesen von Daten Datenbankprogrammierung 6
V Probleme beim Öffnen "einiger" SuperbaseTabellen p Datenbankprogrammierung 8
G Probleme beim Methodenaufruf einer EJB Datenbankprogrammierung 10
H Beim insert bekomme ich den Fehler missing select keyword Datenbankprogrammierung 2
V Fehlermeldung beim Insert Datenbankprogrammierung 16
G beim lesen der db alte daten bekommen? Datenbankprogrammierung 5
A Problem beim Laden des Treibers Datenbankprogrammierung 5
A Fehler beim Starten des Servers für H2 Database Datenbankprogrammierung 13
A Probleme beim Schreiben in eine CSV-Datei aus einer H2-DB Datenbankprogrammierung 2
G Problem beim einfügen in der Datenbank Datenbankprogrammierung 4
G Problem beim Schreiben eines Dateipfads in MySQL-DB Datenbankprogrammierung 9
J OutOfMemory beim Clob Datenbankprogrammierung 5
D An Access Datenbank andocken ohne sie beim System anzumelden Datenbankprogrammierung 3
M "SQL - Apache" Problem beim laden des Applets Datenbankprogrammierung 4
J Fehlermeldung beim ausführeren dieses Befehles Datenbankprogrammierung 5
G Fehler beim Verbinden Datenbankprogrammierung 4
D Problem beim Zugriff auf eine Oracle-DB Datenbankprogrammierung 23
A Datenbankzugriff per Applet - Problem beim Treiber laden Datenbankprogrammierung 6
E Problem beim laden des JDBC Driver bzw der Database Datenbankprogrammierung 8
M Daten von MySQL nach MSSql probleme beim schreiben Datenbankprogrammierung 3
S JDBC-Anfänger und Probleme beim Treiberfinden etc. Datenbankprogrammierung 4
T Probleme beim Verbindungsaufbau zum SQL 2000 Datenbankprogrammierung 2
P Wie Usernamen beim Einloggen für Combobox übernehmen?HELP Datenbankprogrammierung 2
N Fehler beim matchen von Strings via Query Datenbankprogrammierung 2
K MsAccess immer beim zweiten Update java.sql.SQLException Datenbankprogrammierung 28
T Problem beim Update vom Resultset + Firebird Datenbankprogrammierung 2
R JDBC: Resultset beim Thema MEZ&MESZ Datenbankprogrammierung 12
J Fehler beim PreparedStatement Datenbankprogrammierung 2
P Fehlermeldung beim Erstellen einer neuen Tabelle Datenbankprogrammierung 2
M Problem beim erstellen der DB Datenbankprogrammierung 3
G Problem beim Zugriff SQL 2000 Datenbankprogrammierung 2
6 Hilfe beim Einstieg Datenbankprogrammierung 15
A ClassNotFoundException beim Laden des Oracle-JDBC-Treibers Datenbankprogrammierung 10
A Fehler beim Verbinden zur Oracle-DB Datenbankprogrammierung 6
G Rundungsfehler beim Lesen von Fliesskommazahlen... Datenbankprogrammierung 2
K Problem beim Einlesen von Werten aus einem Textfeld Datenbankprogrammierung 11
V Exception beim Speichern von eingegebenen Daten in Tabelle Datenbankprogrammierung 2
W Fehlermeldung beim Ändern einer jdbTable Datenbankprogrammierung 5
G Fehlermeldung beim Zugriff auf SQL-Server-DB Datenbankprogrammierung 3
E Problem beim Datenbank-Design (relational) Datenbankprogrammierung 10
Zrebna PostgreSQL-Query in eine MicrosoftSQL-Query konvertieren - chatGPT hilft nur bedingt. Datenbankprogrammierung 3
L JPA EclipseLink PostgreSQL auslesen mit Query Datenbankprogrammierung 2
T TRIM in Query Datenbankprogrammierung 3
D sql query in methode mit rückgabetyp Datenbankprogrammierung 14
OnDemand Mysql Query Builder Datenbankprogrammierung 1
P Herausfinden wann Query null zurück gibt? Datenbankprogrammierung 1
OnDemand SQL Query Optimierung Datenbankprogrammierung 28
I Hibernate / JPA - Spaltenname von Query (Select) bekommen Datenbankprogrammierung 6
M Oracle Query umbauen (sind die Querys gleich?) Datenbankprogrammierung 5
B Frage bei einer SQL Query Datenbankprogrammierung 3
C Fehlerhafte SQL Query Datenbankprogrammierung 4
B MySQL Query (Anfängerfrage :D) Datenbankprogrammierung 3
B JPA / HQL Support bei Query - Distanzberechnung Datenbankprogrammierung 0
D JPQL- Query über mehrere Tabellen Datenbankprogrammierung 7
Thallius MySQL Was ist falsch an dem Query? Datenbankprogrammierung 2
Thallius MySQL Wo ist der Fehler in dem Query? Datenbankprogrammierung 2
OnDemand MySQL SQL Query Datenbankprogrammierung 2
X SQLite Erhalte bei Query INSERT INTO eine NullPointerException Datenbankprogrammierung 10
B Leerzeichen nach Umlaut -> Sichtbar erst nach Query! Datenbankprogrammierung 6
S sql query, um bestimten datensatz zu finden Datenbankprogrammierung 33
OnDemand SQL Query Anzahl der Werte Datenbankprogrammierung 8

Ähnliche Java Themen


Oben