JOIN und *

Status
Nicht offen für weitere Antworten.

EOB

Top Contributor
hi, wenn ich diese quey habe:


SELECT p.produktnavn, k.knavn FROM produkt p JOIN (produktkategori pk, kategori k) ON (p.id=pk.produktid AND pk.kategoriid=k.id) JOIN (produktfarge pf, farge f) ON (p.id=pf.produktid AND pf.fargeid=f.id) where k.id = '1164113247767' and p.pris between 0 and 5000 and f.id = '1164113248104';


wie kann ich diese umbauen, so dass er mir zb alle kategorien raussucht, die gruen sind und 300-500 kosten? oder alles, was blau ist und so weiter? das er modell, welches zugrunde liegt, koennt ihr hier finden: http://jicoma.com/forum/screenshot.png

ich hab keine ahnung. momentan ist es eben so, dass jeder der 3 werte (kategorie, farbe, preis) da sein muss. ich moechte aber, wenn einer der 3 oder mehrere nicht angegeben sind, ALLES finden. mal ein paar beispiele:


kategorie: schmuck
farbe: gruen
preis: 300-500 --> finde gruenen schmuck im preisrange 300-500


kategorie: sachen
farbe:
preis: 300-500 ..> finde alle sachen, egal welche farbe im preisrange 300-500


kategorie:
farbe:
preis: 300-500 --> finde allea, egal welche kategorie und welche farbe was zwischen 300 und 500 kostet

und so weiter eben...wie stell ich das wohl an?

gruesse und vielen vielen dank :)
 

robertpic71

Bekanntes Mitglied
Ich bin mir noch nicht sicher, ob ich dein Problem richtig "geschnallt" habe.

Variante A)
Willst du alle Möglichkeiten mit einem Select erfschlagen? Der Selectteil kann ja gleich bleiben, aber es macht die Sache einfacher, wenn man nicht abgefragte Werte einfach aus der Where-Bedingung weglassen kann.

Wenn die Anforderungen sehr unterschiedlich sind, sprich der User viel einstellen kann, verwende ich lieber ein dynamisch zusammengestelltes SQL.

In deinem Fall würde aus dem SQL:

SELECT p.produktnavn, k.knavn FROM produkt p JOIN (produktkategori pk, kategori k) ON (p.id=pk.produktid AND pk.kategoriid=k.id) JOIN (produktfarge pf, farge f) ON (p.id=pf.produktid AND pf.fargeid=f.id) where k.id = '1164113247767' and p.pris between 0 and 5000 and f.id = '1164113248104';

ein
SELECT p.produktnavn, k.knavn FROM produkt p JOIN (produktkategori pk, kategori k) ON (p.id=pk.produktid AND pk.kategoriid=k.id) JOIN (produktfarge pf, farge f) ON (p.id=pf.produktid AND pf.fargeid=f.id) where k.id = '1164113247767' and p.pris between 0 and 5000;

wenn die Farbe nicht relevant ist.

Variante B)
Du hast nicht immer einen gültigen Join. Also z.B. könnte es Produkte ohne Farbcode geben. Mit dem hier geposteten (INNER) JOIN werden solche Sätze nicht geliefert.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
D Left Join mit Wioth Rollup Datenbankprogrammierung 0
S MySQL ehemaliger FULL OUTER JOIN zusammenstellen Datenbankprogrammierung 1
L Join zweier Tabellen in SQL Datenbankprogrammierung 2
A Fehlermeldung: JOIN FETCH expressions cannot be defined with an identification variable Datenbankprogrammierung 0
B Inner Join ohne SQL Syntax Datenbankprogrammierung 2
S SQL join - NullPointerExeption Datenbankprogrammierung 3
E Mehrere Tabellenspalten mit INNER JOIN verknüpfen Datenbankprogrammierung 1
OnDemand LEFT JOIN id hat Null Datenbankprogrammierung 6
ruutaiokwu reihenfolge der operanden bei join's Datenbankprogrammierung 5
G SQLite Self Join "unbestimmter tiefe" Datenbankprogrammierung 7
I MySQL Vergleich über mehrere Tabellen! Join? Datenbankprogrammierung 6
N Select mit join Datenbankprogrammierung 3
F Oracle select sum() join select sum() Datenbankprogrammierung 9
Kenan89 Datenbank Join Datenbankprogrammierung 16
M JPQL - Join Verkettung Datenbankprogrammierung 8
K SQL Inner Join - On Klausel Datenbankprogrammierung 10
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
kirchrath Hibernate Join - angejointes Objekt wählen Datenbankprogrammierung 2
Eldorado MySQL SELECT mit GROUP BY und INNER JOIN Datenbankprogrammierung 2
G Join Abfrage Datenbankprogrammierung 12
S SQL inner join bei >10 Tabellen über 2 Variablen Datenbankprogrammierung 2
T MySQL: Join auf sich selbst schlägt fehlt Datenbankprogrammierung 3
MQue Join n:m Datenbankprogrammierung 9
0x7F800000 MS-SQL Server 2008 Wie benutzt man da NATURAL JOIN / INNER JOIN USING? Datenbankprogrammierung 3
D join updaten in java Datenbankprogrammierung 4
G [Hibernate] Problem mit LEFT JOIN Datenbankprogrammierung 7
S Preparestatement mit join Datenbankprogrammierung 4
S MySQL: Abfrage auf 2 Tabellen durch join Datenbankprogrammierung 5
P Join Datenbankprogrammierung 4
G Hilfe: Werte sind alle x2 (oder mehr) nach JOIN Datenbankprogrammierung 13
M Proble mit Selcet mit join und rst.next() Datenbankprogrammierung 15
T Diverse JDBC Probleme (inner join, rs.last(), update) Datenbankprogrammierung 2
E ERROR: argument of JOIN/ON must be type boolean? Datenbankprogrammierung 2
E Nochmal eine Datenbankabfrage Frage :-o (JOIN oder so) Datenbankprogrammierung 4
G Probleme mit Access und Join Datenbankprogrammierung 3
G PL/SQL: Join mit Collection Datenbankprogrammierung 5
T [SQL] Doppelter Join aus der selben Tabelle & Feldnnamen Datenbankprogrammierung 3
S JOIN und wohin damit? Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben