Abap : select aus mehreren Tabellen

hallo zusammen,

Select befehl kennt jeder, aus eine einzige tabelle ist klar: select * from tabelle into table.

wie ist es von mehrere tabellen zu selectieren?

Hallo,

also wenn ich die Frage richtig verstehe möchtest du mehrere Tabellen in eine überführen?
Dann geht das entweder durch einen Join über die zu selektierenden Tabellen, oder die Ergebnismenge der Abfragen werden mit UNION ALL vereinigen.

ich weiss wie es geht theoretich , ich brauche das aber Praktisch:
es handelt um eine Flugsuchprogramm.

für die Suchkritirien:
Flugdatum (frühestens / spätestens)
Abflugland
Abflugstadt
Zielland
Zielstadt
gewünschte Klasse
maximaler Preis

Die Tabelle soll folgende Informationen enthalten: Flugdatum
Abflugstadt
Zielstadt
freie Plätze (in der gewünschten Klasse)
Gesamtzahl der Plätze Name der Fluggesellschaft.

also von der Tabellen spfli ,sflight,scarr,saplane,sbook und SAIRPORT.

ich habe vieles probiert vielleicht ein ergänzende Idee wäre gut im code natürlich.

Kannst du die Attribute der Tabelle noch angeben?

ausgegeben werden :
Flugdatum(fldate)
Abflugstadt(cityfrom)
Zielstadt(cityto)
freie Plätze (in der gewünschten Klasse)
Gesamtzahl der Plätze Name der Fluggesellschaft.

die Tabellen mit Attribute sind :

tabelle SPFLI:
MANDT :Mandantennummer
CARRID :Kürzel der Fluggesellschaft, zugleich Schlüssel
CONNID :ID der Flugverbindung, ebenfalls Schlüssel
COUNTRYFR :Land in dem der Flug beginnt, in Form eines Länderschlüssels, der maximal 3 Zeichen lang sein darf.
CITYFROM :Stadt, in der der Flug beginnt. Genau wie die Länder referenziert CITYFROM die Tabelle SGEOCITY.
AIRPFROM: Flughafen, auf dem der Flug beginnt
COUNTRYTO: Zielland
CITYTO : Zielstadt
AIRPTO : Zielflughafen
FLTIME : Dauer des Fluges. Diese wird als Integer gespeichert, es existiert aber eine Konvertierungsroutine, mit der eine Darstellung in Stunden und Minuten möglich ist.
DEPTIME : Abflugzeit
ARRTIME : Ankunftszeit
DISTANCE : Flugdistanz DISTID
Maßeinheit der Entfernung
FLTYPE: Typ des Fluges. Hier wird angegeben, ob es sich um einen Charterflug (‚X‘) oder einen Linienflug (’ ') handelt.
PERIOD : Gibt an, wie viele Tage zwischen Abflug und Ankunft liegen.

Tabelle sflight :
MANDT : Mandantennum
CARRID : ID der Fluggesellschaft
CONNID : ID der Flugverbindung
FLDATE : Datum des Fluges
PRICE :stuck_out_tongue:reis des Fluges
CURRENCY : Hauswährung der Fluggesellschaft
PLANETYPE : Typ des Flugzeugs. Die Flugzeugtypen finden sich in der Tabelle SAPLANE wieder.
SEATSMAX : Maximale Anzahl belegbarer Sitze in der Economy Class
SEATSOCC : Belegte Plätze in der Economy Class
SEATSMAX_B :Maximale Anzahl belegbarer Sitze in der Business Class
SEATSOCC_B : Belegte Plätze in der Business Class
SEATSMAX_F : Maximale Anzahl belegbarer Sitze in der First Class
SEATSOCC_F : Belegte Plätze in der First Class
PAYMENTSUM : Summe der bisherigen Buchungseinnahmen. Diese Summe wird in der Hauswährung angegeben.

tabelle Sbook :
MANDT : Mandantennummer
CARRID : ID der Fluggesellschaft
CONNID : ID der Flugverbindung
FLDATE : Datum des Fluges
BOOKID :Buchungsnummer
CUSTOMID :Kundennummer
CUSTTYP: Kundentyp. ‚B‘ bedeutet Geschäftskunde, ‚P‘ bedeutet Privatkunde.
SMOKER : Ist ein Raucherplatz gebucht worden (‚X‘) oder nicht (’ ‚)
LUGGWEIGHT : Gewicht des Gepäcks
WUNIT : Einheit des Gewichts
INVOICE : Buchung mit Rechnungserstellung (‚X‘) oder ohne (‘ ')
CLASS: Gebuchte Klasse (‚C‘= Business Class, ‚Y‘=Economy Class, ‚F‘=First Class)
FORCURAM : Preis der Buchung in der Währung, in der sie bezahlt wurde
FORCURKEY: Währung, in der die Zahlung erfolgte
LOCCURAM : Preis der Buchung in der Hauswährung der Fluggesellschaft
LOCCUKEY : Hauswährung der Fluggesellschaft
ORDER_DATE :smiley:atum der Buchung
COUNTER : Nummer der Verkaufsstelle
AGENCYNUM :Nummer des Reisebüros
CANCELLED : Stornierung
RESERVED :Reservierung
PASSNAME :Name des Passagiers
PASSFORM : Anrede
PASSBIRTH : Geburtsdatum des Passagiers

Tabelle SCARR :
MANDT : Mandantennummer
CARRID : ID der Fluggesellschaft
CARRNAME : Name der Fluggesellschaft
CURRCODE :Hauswährung der Fluggesellschaft
URL :Internetadresse der Fluggesellschaft.

Tabelle SAIRPORT :
MANDT : Mandantennummer
ID : ID des Flughafens
NAME : Name des Flughafens
TIME_ZONE : Zeitzone des Flughafens.

TABELLE SAPLANE:
MANDT :Mandantennummer
PLANETYPE : Typenbezeichnung des Flugzeugs
SEATSMAX : Maximale Belegung in der Economy Class
SEATSMAX_B : Maximale Belegung in der Business Class
SEATSMAX_F :Maximale Belegung in der First Class
CONSUM : Durchschnitlicher Verbrauch des Flugzeugs
CON_UNIT :Einheit der Treibstoff-Verbrauchsangabe
TANKCAP : Maximale Treibstoffkapazität des Tanks
CAP_UNIT : Einheit der Treibstoffkapazität
WEIGTH : Gewicht des Flugzeugs
WEI_UNIT :Maßeinheit des Gewichts
SPAN : Spannweite der Flügel
SPAN_UNIT : Einheit der Spannweite
LENG :Länge des Flugzeugs
LENG_UNIT : Einheit der Länge
OP_SPEED :Reisegeschwindigkeit
SPEED_UNIT : Einheit der Reisegeschwindigkeit
PRODUCER :Hersteller des Flugzeugs.

Ok,
ich weiß nicht was du schon versucht hast. Aber ich
würde die Tabellen wie folgt verknüpfen.

select a.*, b.*, c.* from spfli a, sflight b, [Tabelle c]
where a.mandatennun = b.mandantennum
and b.mandatennum = c.mandantennum
usw.

Hallo,
die Anfrage ist leider so unspezifisch, dass es kaum möglich ist, passend zu antworten ohne ein komplettes SQL-Handbuch zu übermitteln,das ansonsten einfach im Internet zu finden ist (sollen die Tabellen verknüpft werden oder aneinandergehängt - mit oder ohne Dopplungen…?).
Ich empfehle daher das Studium der diversen SQL-Handbücher im Internet (z.B. http://www.knaupes.net/sql-tabellen-verknuepfen-mit-… …)
Wenn sich die Frage genauer herauskristallisiert (wie sehen die Tabellen aus, was soll hinterher herauskommen) versuche ich gerne weiterzuhelfen.

Moehre

Es gibt mehrere Arten, Tabellen zu verknüpfen, je nachdem ob die Daten in den Tabellen vorhanden sind oder aber eben nicht.
Beispiel: Über die PLZ in einer Adresstabelle will man aus einer PLZTabelle den Ortsnamen bekommen.

  1. Unter der Annahme, dass die PLZ aus AdressTabelle in der PLZTabelle ist
    Select * from AdressTabelle
    Inner Join PLZTabelle on Adresstabelle.PLZ = PLZTabelle.PLZ

Wenn jetzt in der PLZTabelle die PLZ nicht ist, bekommt man auch die Daten aus der Adresstabelle nicht angezeigt.

Deshalb gibt es die 2. Variante
Select * from AdressTabelle
Outer Join PLZTabelle on Adresstabelle.PLZ = PLZTabelle.PLZ

Mit diesem Select werden alle Daten aus der AdressTabelle ausgelesen, auch wenn in der PLZTabelle nichts gefunden wurde. Die Spalten in Ergebnis haben dann den Wert NULL.