Wie kann ich diese Abfrage machen?

Status
Nicht offen für weitere Antworten.
F

frage

Gast
hallo, ich habe das folgende er modell: link.

ich moechte da alle boote (baat) finden, die einen bestimmten motor haben. also das heisst, ich suche die tabelle motor ab und moechte am ende alle boote haben, die einen solchen motor haben. ich denke mal, dazu benoetige ich die tabellen baat, motor und baatmotor,,,aber ich bekomms nicht recht hin. hier ist, was ich habe:


SELECT b.id FROM baat b
LEFT JOIN baatmotor bm ON (bm.baatid = b.id)
LEFT JOIN motor m ON (m.id = bm.motorid))
WHERE b.modell LIKE '%text%' OR b.produksjonsland LIKE '%text%' OR b.lang_beskrivelse LIKE '%text%' OR b.kort_beskrivelse LIKE '%text%' OR b.ovrige_opplysninger LIKE '%text%' OR b.byggemateriale LIKE '%text%' OR b.baattype LIKE '%text%' OR m.modellbetegnelse LIKE '%text%' OR m.drivstoff LIKE '%text%' OR m.type LIKE '%text%' OR m.motorkunstruksjon LIKE '%text%' OR m.kjolesystem LIKE '%text%' OR m.tenningssystem LIKE '%text%' OR m.drivstoffsystem LIKE '%text%' OR m.giringsforhold LIKE '%text%' OR m.girskift LIKE '%text%' OR m.propellutvalg LIKE '%text%' OR m.startsystem LIKE '%text%' OR m.tilteposisjon LIKE '%text%' OR m.styring LIKE '%text%' OR m.kontraroterende LIKE '%text%' OR m.oljeblanding LIKE '%text%' OR m.std_propp LIKE '%text%' OR m.chokesystem LIKE '%text%' OR m.produsentland LIKE '%text%' OR m.infotext LIKE '%text%' OR m.kort_beskrivelse LIKE '%text%' OR m.lang_beskrivelse LIKE '%text%' ORDER BY b.modell ASC;


ist nicht auf deutsch...kann man aber gut lesen. was in den tabellen steht tut ja nix weiter zur sache. aber wie mach ich das wohl?

vielen dank :)
 
S

SlaterB

Gast
wie wärs mit Formatierung??

und was soll die Anfrage denn nun machen???

da steht select irgendwas WHERE b.modell LIKE '%text%' OR (irgendwas)

d.h. dass du hier unter anderem alle Boote mit einem bestimmten Modell suchst,
auf die Menge der Motoren findet keinerlei Einschränkung statt,
passt gar nicht zu deiner Beschreibung?

und kannst du nicht klein anfangen mit maximal einem Attribut von Boot und einem von Motor?
außerdem mit leichteren Werten statt Variablen?
where b.modell LIKE 'Modell15'?
 
F

frage

Gast
also ich moechte die tabelle motor nach einem begriff durchsuchen. zum beispiel modell30 oder sowas eben. am ende moechte ich alle ids von den booten erhalten, die eben die gefundenen motoren bestizten. ich hatte mir gedacht, es in mehreren schritten zu machen.

1. erstmal die tabelle motor durchsuchen: select id from motor m WHERE m.modellbetegnelse LIKE '%30%' OR m.drivstoff LIKE '%30%' OR m.type LIKE '%30%' OR m.motorkunstruksjon LIKE '%30%' OR m.kjolesystem LIKE '%30%' OR m.tenningssystem LIKE '%30%' OR m.drivstoffsystem LIKE '%30%' OR m.giringsforhold LIKE '%30%' OR m.girskift LIKE '%30%' OR m.propellutvalg LIKE '%30%' OR m.startsystem LIKE '%30%' OR m.tilteposisjon LIKE '%30%' OR m.styring LIKE '%30%' OR m.kontraroterende LIKE '%30%' OR m.oljeblanding LIKE '%30%' OR m.std_propp LIKE '%30%' OR m.chokesystem LIKE '%30%' OR m.produsentland LIKE '%30%' OR m.infotext LIKE '%30%' OR m.kort_beskrivelse LIKE '%30%' OR m.lang_beskrivelse LIKE '%30%'

2. die gefunden ids der motoren in einer liste halten und dan jedes element dieser liste mittels: SELECT baatid FROM baatmotor
WHERE motorid = 'element der liste'


3. jedes ergebnis von 2 in eine andre liste packen und am ende alle boote mit den gefunden motoren haben.


sollte doch gehen, oder?

gruesse:)
 

abollm

Top Contributor
frage hat gesagt.:
hallo, ich habe das folgende er modell: link.

ich moechte da alle boote (baat) finden, die einen bestimmten motor haben. also das heisst, ich suche die tabelle motor ab und moechte am ende alle boote haben, die einen solchen motor haben. ich denke mal, dazu benoetige ich die tabellen baat, motor und baatmotor,,,aber ich bekomms nicht recht hin. hier ist, was ich habe:
[..]
vielen dank :)

Also, so wie ich das ER-Diagramm verstanden habe, muss es wie folgt funktionieren (in dieser Abfrage wird nur die Motor-ID selektiert):
Code:
SELECT m.id
  FROM motor m,
       baat b,
       baatmotor bm,
 WHERE  bm.motorid = m.id
   AND bm.baatid = b.id;
 
S

SlaterB

Gast
klingt doch gut, und was geht nun nicht?
ob das mit den Left Join richtig syntaktet ist kann ich nun nicht sagen,

aber auf jeden Fall ist doch wohl
WHERE m.modellbetegnelse LIKE '%30%' ........
für diesen Thread irrelevant oder?

sage "WHERE m.id in (100,2003,200445);"
und gut, mehr muss man doch über m nicht wissen

so und nun gehts noch um was?
um den Join mit baatmotor?
dann mache erstmal das, aber NUR das, ohne Boot-Tabelle,

ein Join über diese beiden Tabellen, dann dürftest du eine Menge von battmotor-Ids bekommen,
klappt das oder nicht?

wenn diese Ids da sind, dann vergesse das alles komplett und merke dir nur
"WHERE battmotor.id in (17,18,19,29);"

dann gehts weiter zur Boot-Tabelle, genau der gleiche Schritt nochmal,
klappt der Join oder nicht?

wenn alles geht, dann kann man sich über die Gesamtanfrage nochmal Gedanken machen

was ist nun überhaupt die Frage?.............
 
F

frage

Gast
hi, also nochmal erklaert. ich durchsu che die tabelle motor nach einem begriff. irgendeine zeichenfolge. dann moechte ich eben alle boote finden, die die gefundenen motoren haben. ich weiss eben nicht, wie ich DAS machen soll. ich wuerde es gern in einerm sql satement machen und nicht mit zich listen. es muss ja nicht mit join sein oder so. hauptsache, es geht. auf jeden fall muss doch da der suchbegriff mit rein...deshalb geht die eine variante von abollm nicht.

ne idee, oder reden wir aneinander vorbei?

danke ;)
 
S

SlaterB

Gast
um WARUM zum tausendesten Male nicht?

nach 5 Posts willst du jetzt sagen dass du gar nicht weißt wie die Anfrage grundsätzlich geht?
was spricht gegen einen JOIN?
mit einem Join geht es! was soll man denn da sonst drauf antworten?
du hattest doch ganz am Anfang schon vorgeschlagen Join,
deshalb habe ich bisher auch nicht groß drüber geredet sondern nun schon x-mal gefragt, was deine Frage ist,

also Frage nach Join.., immerhin mal eine klitzekleine Info..,
gibt nur eine Antwort: Join geht..

die klassische Variante ist die von abollm,
da kannst du nun gerne weiter sagen 'geht nicht', gut dann ist die Diskussion eben zu Ende ;)
geht aber,

Left Join kenne ich nicht so, geht bestimmt auch,

wenn dir Joins nicht klar sind, dann übe damit erstmal auf einfachere Weise,
schaue in die Tabellen rein,
suche einen Eintrag Boot mit Id x, Motor y, Bottmotor a für x +y

dann
Code:
SELECT m.id
  FROM motor m,
       baat b,
       baatmotor bm,
WHERE  bm.motorid = m.id
   AND bm.baatid = b.id and b.id = x
schon kommt y raus,
das einfachste in der Welt

bzw. erstmal zwischen 2 Tabellen probieren, nicht gleich über 3..,
wie im vorherigen Post von mir beschrieben
 

KL

Neues Mitglied
Hi frage,

Du bist ja schon auf dem richtigen Weg (gewesen), nur die Baat-Tabelle brauchst Du ja nicht wirklich abzufragen, weil den Wert bekommst Du ja schon aus Baatmotor?
Vermutlich ist nur eine schließende Klammer zuviel:


SELECT b.id FROM baat b
LEFT JOIN baatmotor bm ON (bm.baatid = b.id)
LEFT JOIN motor m ON (m.id = bm.motorid))



mfg
KL
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
DStrohma Kann sich jemand mal diese DB-Struktur ansehen? Datenbankprogrammierung 2
E MySQL Kann ID nicht zuweisen, obwohl diese Auto-Increment ist Datenbankprogrammierung 2
N Datenbank in diese Klasse einfügen Datenbankprogrammierung 4
B Wie kann ich eine Jtable mit Inhalt einer SQL Abfrage füllen Datenbankprogrammierung 14
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
L PostgreSQL Abfrage mit EclipseLink Datenbankprogrammierung 7
S Berechnung des Datumsunterschieds in der SQL-Abfrage Datenbankprogrammierung 1
Zrebna Probleme bei Überführung von SQL-Code in eine HQL-Abfrage Datenbankprogrammierung 3
btwX28 mysql abfrage über phpmyadmin Datenbankprogrammierung 8
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
nonickatall MySQL SQL Abfrage erneut ausführen oder rs aktualisieren Datenbankprogrammierung 14
Kirby.exe Verständnisproblem bei SQL Abfrage Datenbankprogrammierung 27
N SQL-Abfrage in JTextField ausgeben Datenbankprogrammierung 6
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
F Mapping einer SQL Abfrage in eine Klasse Datenbankprogrammierung 4
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
Bluedaishi Datenbank Abfrage Datenbankprogrammierung 36
W MySQL DB Abfrage in Array, gemischte Array, generelles vorgehen Datenbankprogrammierung 4
D SQL Abfrage optimieren Datenbankprogrammierung 35
D MySQL Abfrage Datenbankprogrammierung 5
D MySQL Abfrage sortieren Datenbankprogrammierung 4
D MySQL Abfrage SUM datediff Datenbankprogrammierung 3
D Regelmäßige Abfrage aus Workbench Datenbankprogrammierung 6
M SQL-Statement Hilfe bei SQL-Abfrage Datenbankprogrammierung 2
D Abfrage - Spalte(Datum) ändern (Oracle) Datenbankprogrammierung 7
D Datenbank Abfrage Datenbankprogrammierung 7
H MySQL Benutzer Login System mit Datenbank Informationen (Abfrage zu User ist auf DB gesichert) Datenbankprogrammierung 42
D MySQL Abfrage mit kumulierten Werten Datenbankprogrammierung 16
M MySQL Anbindung und Abfrage an die Datenbank Datenbankprogrammierung 2
RowdyN SQLite Einfache Abfrage mit temporäre Tabelle, die nur innerhalb der Abfrage gültig ist Datenbankprogrammierung 0
E Abfrage auf HSQLDB Datenbankprogrammierung 4
M MySQL SQL Abfrage in JTable mit Berechnung Datenbankprogrammierung 3
S Abfrage von Gruppentickets(Mehrere Resorts an einem Tag) Datenbankprogrammierung 1
S SQL Abfrage Datenbankprogrammierung 2
F Abfrage der letzten Einträge Datenbankprogrammierung 2
J SELECT Abfrage/Suche Datenbankprogrammierung 4
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
OnDemand SQL Abfrage und Equals Datenbankprogrammierung 4
B MySQL MySQL-Abfrage von aufsummierter Zeit Datenbankprogrammierung 3
M MySQL MySQLSyntaxError in Java, obwohl Abfrage in HeidiSQL korrekt Datenbankprogrammierung 2
ruutaiokwu sql abfrage mit rekursion, mit oder ohne cte... Datenbankprogrammierung 5
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
L JSONArray/JSONObject MySQL-Servlet Abfrage Datenbankprogrammierung 2
H Derby: SYSCS_UTIL.SYSCS_EXPORT_QUERY mit String Abfrage in wehre-Klausel nicht möglich Datenbankprogrammierung 3
L SQL-Abfrage bricht vor dem Ende ab Datenbankprogrammierung 2
S MySQL Abfrage über mehrere Tabellen + Einträge werden überschrieben Datenbankprogrammierung 1
M Derby/JavaDB Komplexe Abfrage vereinfachen Datenbankprogrammierung 2
S SQL-Abfrage, Filewriter .txt Datei Datenbankprogrammierung 2
P Datenbank- Abfrage mit null'en Datenbankprogrammierung 2
Bluedaishi MySQL Abfrage Problem :-) Datenbankprogrammierung 21
D MySQL Erstellen der richtigen Abfrage Datenbankprogrammierung 3
D MySQL DB Abfrage Prüfen Datenbankprogrammierung 10
D JDBC insert mit select abfrage Datenbankprogrammierung 5
E PostgreSQL Exception too ...many clients already bei DB-Abfrage Datenbankprogrammierung 14
M MySQL SQL Abfrage Problem Datenbankprogrammierung 6
W No data found: SQL-Abfrage funktioniert nur beim Debuggen Datenbankprogrammierung 3
E Abfrage nach existierender SQL-Tabelle Datenbankprogrammierung 7
H JSON Array abfrage beschleunigen Datenbankprogrammierung 2
S MySQL Abfrage: Wenn Feld leer, alles anzeigen Datenbankprogrammierung 5
Mrtwomoon Abfrage-Ergebnisse in einem Fenster darstellen Datenbankprogrammierung 8
0 SQL Abfrage Bestellung Datenbankprogrammierung 15
G SQLite SQLite Abfrage Datenbankprogrammierung 4
C Mit jsp über Java eine DB Abfrage durchführen --> java.lang.ClassNotFoundException Datenbankprogrammierung 4
Dit_ Hibernate, effiziente SQL-Abfrage definieren Datenbankprogrammierung 5
B My-SQL Abfrage - Out Of Memory Error Datenbankprogrammierung 13
C MySQL Problem mit UPDATE Abfrage Datenbankprogrammierung 13
K SQLite Einfache DB-Abfrage Datenbankprogrammierung 2
C Problem mit SQL-Abfrage Datenbankprogrammierung 5
C Sortierung bei SQL-Abfrage Datenbankprogrammierung 3
B Bei Abfrage schießt der Speicher in die Höhe Datenbankprogrammierung 6
M SQL Abfrage Dupliakte bei Kreuzvergleich Datenbankprogrammierung 2
M Access Abfrage mit Parameter & Access/Java liefern unterschiedliche Ergebnisse Datenbankprogrammierung 2
G SQL Abfrage Datenbankprogrammierung 5
C SQL-Abfrage Datenbankprogrammierung 4
B SQL-Abfrage Datenbankprogrammierung 4
R SQL Abfrage, je nach ausgewählten Parametern Datenbankprogrammierung 11
C Wert in SQL-Abfrage zählen lassen Datenbankprogrammierung 8
R Memory leaks bei DB Abfrage Datenbankprogrammierung 16
S Abfrage auf SQLite-DB Datenbankprogrammierung 2
I Belastet es das System zu sehr einen Timer jede 0.2 Sekunden eine DB Abfrage machen zu lassen? Datenbankprogrammierung 9
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
G Abfrage von Teilnehmern Datenbankprogrammierung 4
B HSQLDB Probleme mit Select...Where Abfrage Datenbankprogrammierung 16
G JOIN Abfrage über mehrere Tabellen Datenbankprogrammierung 15
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
G SQLite Abfrage, ob in Tabelle X Spalte Y existiert Datenbankprogrammierung 4
A MySQL Ergebnss aus SQL Abfrage in Hauptklasse verwenden Datenbankprogrammierung 3
N Geschwindigkeit bei if Abfrage Datenbankprogrammierung 11
J sql abfrage ... Problem mit Datumswert Datenbankprogrammierung 3
G Performante SQL- Abfrage (LIKE %) Datenbankprogrammierung 21
G Join Abfrage Datenbankprogrammierung 12
M db abfrage fehlerhaft Datenbankprogrammierung 5
C MySQL Abfrage mit flexibler WHERE bedingung Datenbankprogrammierung 10
C Datenbank-Abfrage, if im Select Datenbankprogrammierung 9
S MySQL Frage zu LeftJoin Abfrage Datenbankprogrammierung 2
G SQL Abfrage über mehrere Tabellen Datenbankprogrammierung 28
H SQL Abfrage - zwei tabellen vergleichen. Datenbankprogrammierung 2
H MySQL Datenbank Abfrage Datenbankprogrammierung 10

Ähnliche Java Themen

Neue Themen


Oben