Vinzenz Mai: Select, eine Variable soll zwei bedingungen erfüllen

Beitrag lesen

Hallo Malcolm,

gewünschtes Ergebnis, z.B:
Gruppe

qw
weil, <es folgt Deine Begründung>

Ich frage über $_SERVER['REQUEST_URI'] den Aktuellen URI ab, diesen Vergleiche ich dann mit der 'Link' Tabelle in meiner DB.

sorry, der Teil ist völlig irrelevant. Wir lassen PHP einfach außen vor.
Ich habe Dein Ausgangsposting nochmals intensiv durchgelesen. Soweit ich Dich verstanden habe, möchtest Du alle Links und alle Titel haben, die in der gleichen Gruppe sind wie der übergebene Link?

Ausgangstabelle:

Gruppe |    Link     |    Titel
-----------------------------------
   qw   | /home.html  |  Startseite
   qw   | /link.html  |    Links
   qw   | /sonst.html |  Sonstiges

Link: /home.html

gewünschtes Ergebnis:

|    Link     |    Titel
---------------------------
| /home.html  |  Startseite
| /link.html  |    Links
| /sonst.html |  Sonstiges

weil diese sich in der gleichen Gruppe befinden wie /home.html, das sich in der Gruppe qw befindet. Ist das so?

Mir fallen spontan zwei Wege ein, die dahin führen, das eine wäre ein Selfjoin, das andere ein Subselect, wobei ich davon ausgehe, das die Werte in der Spalte link eindeutig sind:

1. Lösung mit Selfjoin:

Wir benötigen
    die Links und
    die Titel
aus der
    Tabelle
die sich in der gleichen Gruppe
    befinden wie der Link /home.html

  
SELECT  
    t1.link,  
    t1.titel  
FROM  
    tabelle t1  
INNER JOIN  
    tabelle t2  
ON  
    t1.Gruppe = t2.Gruppe  
WHERE  
    t2.link = '/home.html' -- Beachte, dass die Einschränkung in der  
                           -- anderen Tabelle gemacht wird als der, aus  
                           -- der Du Deine Ergebnisdaten nimmst.  

2. Subselect

  
SELECT                     -- Gib mir  
    t1.Link,               -- Link und  
    t1.Titel               -- Titel  
FROM                       -- aus meiner  
    tabelle                -- Tabelle  
WHERE                      -- wobei die  
    t1.Gruppe IN (         -- Gruppe in der Liste der  
        SELECT  
            t2.Gruppe      -- Gruppen sein muss,  
        FROM  
            tabelle t2  
        WHERE  
            t2.Link = '/home.html'  -- in der sich der angegebene Link  
                                    -- befindet  
    )  

Prinzipiell täte es im zweiten Fall statt dem Operator IN auch ein
Gleichheitszeichen, wenn sich ein Link nur in einer Gruppe befinden kann.

Freundliche Grüße

Vinzenz