Bereiche in MySQL & Abgeleiteten Tabellen

  • Nehmen wir an, ich habe 2 Tabellen
    Eine mit dem Namen Baskets,
    Eine andere mit dem Namen Früchte.

    Baskets-
    basket_id, basket_name
    1 - Basket One
    2 - Basket Two

    Früchte- < br /> fruit_id, basket_id, fruit_name
    1 - 1 - Banane
    2 - 1 - Apfel
    3 - 2 - Birne

    SELECT * FROM baskets
    JOIN (SELECT GROUP_CONCAT(fruit_id SEPARATOR ', ') FROM fruits WHERE baskets.basket_id=fruits.basket_id) AS der_fruits
    ON baskets.basket_id=der_fruits.basket_id

    Nun möchte ich mit dieser Abfrage 2 Zeilen (da es 2 Körbe gibt) mit einer Liste der Frucht-IDs erhalten darin.

    Wie folgt:
    basket_id, Früchte
    1 - 1, 2
    2 - 3

    Aber jetzt bekomme ich Folgendes:
    basket_id, Früchte
    2 - 1, 2, 3

    Die Sache ist, ich muss den globalen Wert baskets.basket_id in der Tabelle DERIVED übergeben. Gibt es einen globalen Gültigkeitsbereich in MySQL?
    Oder Gibt es eine Möglichkeit, den globalen Wert für baskets.basket_id in einer Variablen in dieser abgeleiteten Tabelle zu übergeben?

    22 November 2011
    Sinthia V
1 answer
  •  SELECT baskets.*,
          (SELECT GROUP_CONCAT(fruits.fruit_name)
             FROM fruits f
            WHERE b.basket_id = f.basket_id) AS der_baskets
     FROM baskets b
     

    Die Früchte sind eine Unterabfrage. Ich verstehe nicht, warum Sie die Beziehung zweimal definieren. Gibt es etwas, das Sie versuchen zu verstehen, verstehe ich nicht?

    22 November 2011
    Sinthia V