XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   Serveradministration und serverseitige Scripte (http://xhtmlforum.de/forumdisplay.php?f=80)
-   -   MySQL Abfrage über 3 Tabellen (http://xhtmlforum.de/showthread.php?t=53970)

cvb 05.10.2008 15:24

MySQL Abfrage über 3 Tabellen
 
Hallo, ich habe eine komplexe Select-Abfrage zu entwickeln und komme nicht weiter.

Meine Tabellen:

[Artikel]
---------------------
| Artikel_id | Status |
---------------------

[Artikel_Unterrubrik]
----------------------------
| Artikel_id | Unterrubrik_id |
----------------------------

[Unterrubrik_Rubrik]
----------------------------
| Unterrubrik_id | Rubrik_id |
----------------------------

Bedingungen:
- Bei der Abfrage ist mir nur die Rubrik bekannt.
- Nur Artikel mit dem Status = 1
- Tabelle [Unterrubrik_Rubrik] ist eine 1[Rubrik] - n[Unterrubrik] Beziehung. -Sowie Tabelle [Artikel_Unterrubrik]

Hier mein erster Versuch der Abfrage:

SELECT a.artikel_id
FROM artikel a,
unterrubriken b,
artikel_unterrubrik c
WHERE b.unterrubrik_rubrik_id = $rubrik
AND b.unterrubrik_id = c.unterrubrik
AND a.artikel_status = 1

Curtains 05.10.2008 16:43

Hallo cvb,

ich empfehle dir von Anfang an eine explizite Schreibweise der JOINS. Sie ist viel lesbarer und SQL-naher (= schneller).

Bei deiner Tabellenstruktur könnte die Query ungefähr so aussehen:

PHP-Code:

SELECT
    
*
FROM
    artikel a
JOIN
    artikel_unterrubrik au
ON
    au
.artikel_id a.artikel_id
JOIN
    unterrubrik_rubrik ur
ON
    ur
.unterrubrik_id au.unterrubrik_id
WHERE
    a
.status 

Und hier mein Vorschlag wie die Tabellenstruktur aussehen könnte/sollte:

PHP-Code:

[status]
status_id caption
-------------------

[
artikel]
artikel_id status_id
----------------------

[
rubrik]
rubrik_id parent_rubrik_id
----------------------------

[
artikel_rubrik_rel]
artikel_id rubrik_id
---------------------- 

Mit Hilfe des Feldes 'parent_rubrik_id' kann man beliebig tiefe Baumstrukturen für die (Unter-)Rubriken definieren.


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:57 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023