Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Rat in SQL-Verknüpfung zwischen zwei Tabellen (keine Anfänger-Frage)

Frage Entwicklung Datenbanken

Mitglied: LuckyLuke

LuckyLuke (Level 1) - Jetzt verbinden

23.09.2008, aktualisiert 25.09.2008, 5794 Aufrufe, 3 Kommentare

Hallo liebe Datenbankanwender!

Infos zu meinem DB-System
phpMyAdmin - 2.11.4, MySQL-Client-Version: 5.0.51a, PHP5.1

Problemstellung
Ich habe eine Datenbankanwendung in PHP geschrieben, in der Produkte verwaltet werden. Soweit alles super.
Wie jeder weiß, enthält jedes Produkt Parameter. Eine Eingabemaske, die ich in PHP geschrieben habe, enthält eine Auflistung von ca. 120 Parametern. Diese sind Kategorisiert und mit Überschriften versehen. Die zugehörige Datenbanktabelle sieht wie folgt aus:

| prd_kategorie | para_id | parameter | header |

In der Eingabemaske wird per Checkbox der jeweilige Parameter dem Produkt zugewiesen und in folgender Verwaltungstabelle unter para_verschieben abgespeichert:

| prdkind_id | para_id | parakat_id | prdzusatzoptionwert | para_verschieben |

Soweit auch so gut.
Damit ich später evtl. Parameter bearbeiten kann, sprich hinzufügen oder entfernen per Checkbox, sind beide Tabellen mit einer WHERE-Bedingung verknüpft:

01.
SELECT PRODVER.prdkind_id, PRODVER.para_id, PRODVER.parakat_id, PRODVER.prdzusatzoptionwert, PRODVER.para_verschieben,  
02.
PARA.para_id, PARA.prd_kategorie, PARA.parameter, PARA.header, KAT.parakat_id 
03.
FROM produkt_verwaltung PRODVER, parakat KAT, parameter PARA 
04.
WHERE PRODVER.parakat_id = KAT.parakat_id 
05.
AND PRODVER.para_id = PARA.para_id 
06.
AND PARA.prd_kategorie = KAT.parakat_id
Und hier kommt auch mein Problem, an dem ich mir etwas die Zähne verbeiße. Die Verknüpfung funktioniert richtig, sprich die Zuweisung stimmt. DOCH: Dem User werden nach Auswahl des Produkts mit vorhandener Auswahl, nur die Parameter angezeigt, die gecheckt sind. Logisch, weil in der Verwaltungstabelle auch nur die IDs der Parameter stehen, die vergeben wurden.
Frage: Wie bekomme ich es hin, dass alle gesamten Parameter aus der Parameter-tabelle und die vergebenen Parameter aus der Verwaltungs-Tabelle (Checkbox wird aktiv gesetzt) angezeigt werden? Ist in diesem Fall eine WHERE-Verknüpfung nicht die richtige?

Über eine Anregung wäre ich euch dankbar.

Gruß, Lucky.
Mitglied: RDiller
23.09.2008 um 11:12 Uhr
Versuchs doch mal mit join, z.B.

FROM (produkt_verwaltung left join PRODVER.parakat_id = KAT.parakat_id ) .......

Gruß

Ralf
Bitte warten ..
Mitglied: LuckyLuke
23.09.2008 um 12:18 Uhr
Hey Ralf!!!!

Du warst der rechte Mann zur rechten Stelle, danke!!!
Mit dem LEFT JOIN ... ON wird mein Problem gelöst. Danke für deine Anregung!!!

Hier für die Lösung:

01.
SELECT PARA.para_id, PARA.prd_kategorie 
02.
FROM dev_parameter PARA 
03.
LEFT JOIN dev_zusatzoption_verwaltung VERW ON PARA.prd_kategorie = VERW.parakat_id 
04.
AND PARA.para_id = VERW.para_id
Gruß, LuckyLuke
Bitte warten ..
Mitglied: LuckyLuke
25.09.2008 um 11:36 Uhr
UPDATE
Eine Macke hat noch mein Skript, dieser Bug bzw. Folge vom LEFT-JOIN ist mir im Nachhinein aufgefallen.

Meine Parameter, die gechecked sind, werden bei einem Produkt, dass neu angelegt wurde, nur mit den Parametern angezeigt, die noch unchecked sind.
Trotz ID-Abfrage des jeweiligen Produktes, ist die Ausgabe immer noch verkehrt.

Ist in diesem Fall ein Sub-Select notwendig?

Gruß, Lucky.
Bitte warten ..
Ähnliche Inhalte
Exchange Server
gelöst Keine Verbindung zwischen Handys und MS Exchange Server 2010 mehr (6)

Frage von andreas1234 zum Thema Exchange Server ...

Datenbanken
gelöst SQL ORDER BY und Join mit 2 Tabellen (7)

Frage von Dipps zum Thema Datenbanken ...

Switche und Hubs
gelöst LAG zwischen SG300-Switches macht Probleme. Wer weiß Rat? (31)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...

Neue Wissensbeiträge
Windows 10

Windows 8.x oder 10 Lizenz-Key aus dem ROM auslesen mit Linux

(6)

Tipp von Lochkartenstanzer zum Thema Windows 10 ...

Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Heiß diskutierte Inhalte
Windows 10
gelöst Windows 10 Home "Netzlaufwerk nicht bereit" (19)

Frage von Oggy01 zum Thema Windows 10 ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (18)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

SAN, NAS, DAS
+100tb Storagelösung (11)

Frage von Data-Fabi zum Thema SAN, NAS, DAS ...

Exchange Server
Exchange Postfach leeren - nicht löschen (11)

Frage von AndreasOC zum Thema Exchange Server ...