MySQL-Abfrage / steh am Schlauch…

M

miss.moxy

Aktives Mitglied
Thread Starter
Dabei seit
15.05.2004
Beiträge
6.607
Reaktionspunkte
625
Hallo potentielle Helfer…

Vielleicht mag wer mich mal in die richtige Richtung schubsen.
PHP-Website, SQL-Abfrage. Eigentlich recht simpel.
Drei Tabellen: Kategorie, Subkategorie, Arbeiten.
Es gibt ~4 Kategorien, ~8 Subkategorien und X Arbeiten.
Vereinfacht: (primary key, foreign key)

kat:
id | name
sub:
id | kat_id | name
arb:
id | sub_id | name

Ich hätte gerne folgende Abfrage: alle Arbeits-ids einer Kategorie

Ich hätte an eine verschachtelte SELECT-Abfrage gedacht, ala
Code:
SELECT arb.id from arb where arb.sub_id IN (SELECT sub.id from sub where sub.kat_id = kat.id)
Aber das (auch in Variationen) will nicht klappen.
Ich bin mir mit dem IN auch nicht sicher.
Wie gehört es denn richtig? Weiß das wer?
Bitte danke :)

Danke & LG,
lea


Hmpf. Eigentlich sollte ich es können ):
 
kann MySQL überhaupt schon subselects?
ich denke du musst mit joins arbeiten.

oder irgendwas in der art:

SELECT arb.id FROM arb, sub, kat WHERE arb.sub_id = arb.id AND sub.kat_id = sub.id

...keine garantie, hab das jetzt nur schnell runter getippt ohne groß nachzudenken, kann sein das ein logik fehler drin ist.
 
Azathoth schrieb:
kann MySQL überhaupt schon subselects?
Oh daran hab ich garnicht gedacht, in der FH haben wir mit SQL gearbeitet...
Ok, werd mich mal mit Joins auseinandersetzen.
Danke für die Antwort! :)
 
Schreib lieber mal, welche Version von MySQL du installiert hast. Die 4er kann afaik keine Subselects, die 5er schon ;)
 
Ich hatte neulich ein ähnliches Problem, die Voraussetzungen waren sogar die selben wie bei Dir. Bei mir waren es statt "Arbeiten" einzelne Produkte.

Mein Tip: Kategorie und Subkategorie in einer Tabelle zusammenfassen und die Daten in der 3. Normalform in der DB ablegen:

table1: Arbeiten
table2: Kategorien inkl. Subkats.
table3: Verknüpfung Arbeiten <-> Kategorie

In diesem Thread steht alles drin: https://www.macuser.de/forum/showthread.php?t=199808

2nd
 
Code:
SELECT a.name 
FROM   arb AS a
INNER  JOIN sub AS s ON a.sub_id = s.id
INNER  JOIN kat AS k ON s.kat_id = k.id
WHERE  k.name = 'Deine Kat';

Das müsste funktionieren. Habs aber nicht getestet.
 
@Badener: ist Version 4 *hmpf*

@2nd: ok, werde mir mal die Umgestaltung der DB-Struktur überlegen
wenn das von balufreak nicht klappen sollte…

@balufreak: ich probiers mal aus…


DANKE allen!!! :)
 
Bügel halt die 5er drüber... Gibt es zum Download bei www.mysql.de

ACHTUNG: unbedingt die Installationsanleitung z.B. unter www.entropy.ch beachten - sonst sind deine existierenden Datenbanken weg!
 
balufreaks Abfrage war ein Treffer!

Danke nochmal!

*weitertüftel*
 
@Badener:
werd ich bei Gelegenheit mal versuchen - danke!
Arbeit eh mit einer Art Test-Datenbank, da ist nix wichtiges oben…
 
Zurück
Oben Unten