AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [SQL] Verknüpfungs Problem
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] Verknüpfungs Problem

Ein Thema von MarcusB · begonnen am 17. Feb 2005 · letzter Beitrag vom 18. Feb 2005
Antwort Antwort
Seite 1 von 2  1 2      
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#1

[SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 11:22
Datenbank: MySQL • Version: 4.0.22 • Zugriff über: n/a
Hallo,

ich häng mal wieder

Ich habe 2 Tabellen, in der einen sind Produkte gespeichert in der anderen deren Einsatzgebiete etwa so (stark vereinfacht):

Code:
Tabelle 1:

id|name     |
--+----------+
1 |Bohrer   |
2 |Hammer   |

Tabelle 2:

pid|name     |
---+----------+
1  |schlagen |
1  |schrauben |
2  |schlagen |
1  |bohren   |

(pid=pi)
Zusätzlich habe ich eine Suchmaske in der man die Einsatzgebiete anhaken kann.

Wie muss meine SQL-Abfrage aussehen, damit ich z.B. herausfinde welches Gerät schlagen und bohren kann?

Ich hoffe ihr versteht was ich meine
  Mit Zitat antworten Zitat
czapie

Registriert seit: 17. Nov 2002
Ort: Berlin
384 Beiträge
 
Delphi 5 Standard
 
#2

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 11:34
SELECT tabelle1.name FROM tabelle1, tabelle2 WHERE tabelle1.id = tabelle2.pid AND tabelle2.name = 'schlagen' Meinst du so?
Was man zu verstehen gelernt hat, fürchtet man nicht mehr.
(Marie Curie)
http://www.cafes-in-berlin.com
  Mit Zitat antworten Zitat
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#3

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 11:42
Ja, im Prinzip schon, aber das Problem entsteht, wenn ich nach 'schlagen' UND 'bohren' suchen will.
Wenn ich nämlich einfach noch eine AND Klausel dranhänge wirds ja immer falsch
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 11:46
dann muss es eben
SELECT tabelle1.name FROM tabelle1, tabelle2 WHERE tabelle1.id = tabelle2.pid AND tabelle2.name = 'schlagenAND tabell2.name = 'bohren' heißen. nur hätte das ja keinen sinn weil nie beides vorkommen kann. also musstest du einfach mal or anstelle des letzten "AND" nehmen
SELECT tabelle1.name FROM tabelle1, tabelle2 WHERE tabelle1.id = tabelle2.pid AND (tabelle2.name = 'schlagenOR tabell2.name = 'bohren')
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 11:54
Zitat von MarcusB:
Ich habe 2 Tabellen, in der einen sind Produkte gespeichert in der anderen deren Einsatzgebiete etwa so (stark vereinfacht):
Code:
Tabelle 1:
id|name     |
--+----------+
1 |Bohrer   |
2 |Hammer   |

Tabelle 2:
pid|name     |
---+----------+
1  |schlagen |
1  |schrauben |
2  |schlagen |
1  |bohren   |
Du brauchst 3 Tabellen:
Tabelle 1 mit Geräten, Tabelle 2 mit Aktionen, Tabelle 3 stellt eine N:M Verknüpfung zwischen
Tabelle 1 & 2 her.
Code:
Tabelle 1:
idDevice|name     |
--------+----------+
1       |Bohrer   |
2       |Hammer   |
Tabelle 2:
idAction|name     |
--------+----------+
1       |schlagen |
2       |schrauben |
3       |bohren   |
Tabelle 3:
idDevice|idAction |
--------+----------+
1       |3         |
2       |1         |
Andreas
  Mit Zitat antworten Zitat
czapie

Registriert seit: 17. Nov 2002
Ort: Berlin
384 Beiträge
 
Delphi 5 Standard
 
#6

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 12:01
@shmia ich finde deine Lösung eindeutig sauberer und schöner, aber ich glaube nicht, dass das in diesem Fall zwingend notwendig ist. Mir fällt kein Fall ein, bei dem die aktuelle Lösung versagen würde.
Was man zu verstehen gelernt hat, fürchtet man nicht mehr.
(Marie Curie)
http://www.cafes-in-berlin.com
  Mit Zitat antworten Zitat
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#7

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 12:13
Ich hab mir schon gedacht, dass das kompliziert wird.

Das mit dem OR funktiniert leider nicht, da ich nur Geräte will, die BEIDES können.

Danke auch für den Tipp mit der 3. Tabelle, aber da kriege ich Probleme, da da schon ein Haufen Skripte drumherum sind, die dann alle geändert werden müssten

Aber wenns keine andere Möglichkeit gibt, werde ichs wohl so machen müssen.
  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

Registriert seit: 14. Sep 2003
Ort: Rognac/Marseille - Frankreich
128 Beiträge
 
Delphi 7 Professional
 
#8

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 12:15
Zitat von czapie:
@shmia ich finde deine Lösung eindeutig sauberer und schöner, aber ich glaube nicht, dass das in diesem Fall zwingend notwendig ist. Mir fällt kein Fall ein, bei dem die aktuelle Lösung versagen würde.
Wenn man nur mit zwei Tabellen arbeitet, dann heisst das, dass für jedes neue Produkt die Einsatzgebiete manuell hinzugefügt werden, man muss also jedes Mal "bohren", etc.. schreiben.

Ein Tippfehler bzw. Gross-Kleinschreibung und schon gibt's Probleme, den dann steht für Hammer vielleicht schlagen und für Bohrer Schlagen.

Ausserdem schreibt Marcus, dass er eine Suchmaske hat, in der man das Einsatzgebiet wählen muss. Wie will er die Maske den automatisch füllen, ohne doppelte Einträge zu bekommen (ich weiss SELECT DISTINCT, ist aber nicht sauber).

Ich würde auf jeden Fall zu drei Tabellen raten, so wie shmia rät.

Tschüss,
Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
MarcusB

Registriert seit: 7. Mär 2004
121 Beiträge
 
Delphi 7 Professional
 
#9

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 12:45
@lume96: Das ist ja stark vereinfacht dargestellt, die Werte wie "schlagen" und "bohren" etc. kommen ja aus einer dritten Tabelle,
aber jetzt habe ich ein Verständnisproblem.
Wenn ich wie vorgeschlagen 3 Tabellen mache habe ich doch das gleiche Problem, oder?

Code:
Tabelle 1:
idDevice|name     |
--------+----------+
1       |Bohrer   |
2       |Hammer   |
Tabelle 2:
idAction|name     |
--------+----------+
1       |schlagen |
2       |schrauben |
3       |bohren   |
Tabelle 3:
idDevice|idAction |
--------+----------+
1       |3         | <-- (Bohrer bohrt)
2       |1         |
1       |2         | <-- (Bohrer schraubt)
Ich komm nicht auf das Statement, dass mir Geräte mit "bohrt" UND "schraubt" liefert
Das ganze wird ja noch ein bischen komplizierter, weil in dem Suchformular beliebig viele Einsatzgebiete angehakt werden können.

  Mit Zitat antworten Zitat
Benutzerbild von lume96
lume96

Registriert seit: 14. Sep 2003
Ort: Rognac/Marseille - Frankreich
128 Beiträge
 
Delphi 7 Professional
 
#10

Re: [SQL] Verknüpfungs Problem

  Alt 17. Feb 2005, 13:11
Moin,

bezogen auf die beiden Tabellen in Deinem ersten Eintrag würde das ungefähr so aussehen :
SQL-Code:
SELECT p.name FROM tabelle1 p, tabelle2 t1, tabelle2 t2
WHERE p.id = t1.pid
AND p.id = t2.pid
AND t1.name = 'schlagen'
AND t2.name = 'bohren'
Hab's jetzt nicht geprüft, aber sollte in etwa so laufen. Ich glaube nicht, dass Du bei MySQL andere Lösungen hast.

Tschüss,
Lutz
Lutz Meyer
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz