Stefan Werner: Information als Spalte an Datensatz anfügen

Hallo zusammen,

ich überlege gerade, ob es innerhalb eines SQL-Statements möglich ist, über einen JOIN o.ä. Daten aus mehreren Abfragen in einem Datensatz zu kombinieren. Konkretes Beispiel:

Tabelle News
************

news_id | news_titel

1 | "SelfHTML wird bald 14"
2 | "Neues Update für SQL Server 2005"

Tabelle NewsImages
******************

ni_id | ni_news_id | ni_image | ni_sortorder

1 | 1 | "birthday1.jpg" | 10
2 | 1 | "birthday2.jpg" | 20
3 | 1 | "birthday3.jpg" | 30

Zielabfrage:
************

news_id | news_titel | news_firstpic
1 | "SelfHTML wird bald 14" | "birthday1.jpg"
2 | "Neues Update für SQL Server 2005" | NULL

Die Abfrageteile selbst wären ja recht einfach

SELECT news_id, news_titel, meinunterabfragefeld as news_firstpic FROM News

wobei meinunterabfragefeld = "SELECT TOP 1 ni_image FROM NewsImages WHERE ni_news_id=news_id ORDER BY ni_sortorder"

Vielleicht denke ich auch gerade zu kompliziert, aber kann mir vl jemand von euch einen Hinweis geben, ob es möglich ist, diese Abfragen zu einer zusammenzubekommen?

Vielen Dank

Stefan

  1. Mahlzeit Stefan Werner,

    ich überlege gerade, ob es innerhalb eines SQL-Statements möglich ist, über einen JOIN o.ä. Daten aus mehreren Abfragen in einem Datensatz zu kombinieren.

    Prinzipiell sind JOINs genau dafür da. In Deinem speziellen Fall hilft Dir aber eine "korrelierte Unterabfrage" eher weiter ... informiere Dich zu dem Thema.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
  2. Hallo,

    ich überlege gerade, ob es innerhalb eines SQL-Statements möglich ist, über einen JOIN

    Du kennst das Stichwort,

    o.ä. Daten aus mehreren Abfragen in einem Datensatz zu kombinieren. Konkretes Beispiel:

    Tabelle News
    ************

    news_id | news_titel

    1 | "SelfHTML wird bald 14"
    2 | "Neues Update für SQL Server 2005"

    Tabelle NewsImages
    ******************

    ni_id | ni_news_id | ni_image | ni_sortorder

    1 | 1 | "birthday1.jpg" | 10
    2 | 1 | "birthday2.jpg" | 20
    3 | 1 | "birthday3.jpg" | 30

    news_id | news_titel | news_firstpic
    1 | "SelfHTML wird bald 14" | "birthday1.jpg"
    2 | "Neues Update für SQL Server 2005" | NULL

    wo ist das Problem?

    Vielleicht denke ich auch gerade zu kompliziert, aber kann mir vl jemand von euch einen Hinweis geben, ob es möglich ist, diese Abfragen zu einer zusammenzubekommen?

    Selbstverständlich. Ich empfehle unsere Artikel in SELFHTML aktuell:

    - Einführung in Joins
     - Fortgeschrittene Jointechniken

    Freundliche Grüße

    Vinzenz

  3. Nochmal ich,

    über einen JOIN o.ä. Daten aus mehreren Abfragen in einem Datensatz zu
    kombinieren. Konkretes Beispiel:

    das mit dem Hinweis auf korrelierte Unterabfragen war eine interessante Sache, das hab ich noch nicht alles gewusst ... schon krass, was alles geht.

    Für alle die auch mal an einem ähnlichen Problem hängen, hier meine Lösung die ich gefunden habe

    SELECT a.news_id, a.news_header,
    (SELECT TOP(1) ni_image FROM NewsImages WHERE a.news_id = ni_news_id ORDER BY ni_sortorder) FROM News AS a

    Stefan