Ankündigung

Einklappen
Keine Ankündigung bisher.

Innerjoin Abfrage Hilfe

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Catzenjaeger
    hat ein Thema erstellt Innerjoin Abfrage Hilfe.

    Innerjoin Abfrage Hilfe

    Hallo

    habe folgende 3 Tabellen

    Tabelle 1
    iId,iReceiptDate,iAccountingDate,fBetrag,sTripId,i Version,sSpesenart,sBeschreibung,sDVCode,sBUCode,s BLCode,sBuKrs,sCostTypeNew,iCompanyCode,sFileId

    Tabelle 2
    iId,iAccountingDate,sFileId,sTripId,iVersion,iActu alVersion,sLand,sOrt,iStartDatum,iEndDatum,iKm,iDa uer,sBukrs,sBUCode

    Tabelle 3
    iId,sTripId,iVersion
    ich möchte eine Abfrage über alle 3 Tabellen machen
    ich brauche konkret die ID, Start und Enddatum, Trip ID, FileID, Land, Ort Dauer und Bukurs (also den Preis)

    so versucht habe ich das hier:
    Code:
    SELECT a.iId, b.iStartDatum, b.EndDatum, b.iDauer, a.sTripId, b.sFileId, b.sLand, b.sOrt, a.fBetrag, b.sBukrs
    FROM report_trip a, report_tripselect b, report_receipt c 
    WHERE a.`iId`= b.iId and  a.`iId`= c.iId and c.sSpesenart='HOTL'
    aber ich bekomme immer Fehler
    SQL Error Unknown column b.iStartDatum in field list

    aber die Spalte gibt's doch in Tabelle 2

  • Catzenjaeger
    antwortet
    Ah danke für deine Erklärungen

    Meine letzte Frage; gibts einen Unrterschied zwischen meiner Abbfrage und Deiner Abgage bezüglich der Ergebnisse? Also ich meine kommt da was anderes raus (kanns leider zu Hause nicht probieren) oder worin leigen die Unterscheide - falls kein Unterscheid - warum dann das ganze?

    Einen Kommentar schreiben:


  • erc
    antwortet
    Zitat von Catzenjaeger Beitrag anzeigen
    wie würde das mit innerjoin aussehen?
    So:
    Code:
    SELECT 
    	report_receipt.iId, 
    	report_trip.iStartDatum, 
    	report_trip.iEndDatum, 
    	report_trip.iDauer, 
    	report_receipt.sTripId, 
    	report_trip.sFileId, 
    	report_trip.sLand, 
    	report_trip.sOrt, 
    	report_receipt.fBetrag, 
    	report_trip.sBukrs
    FROM
    	report_receipt INNER JOIN
    	report_trip ON (report_receipt.iId = report_trip.iId) INNER JOIN
    	report_tripselect ON (report_tripselect.iId = report_receipt.iId)
    WHERE 
    	report_receipt.sSpesenart = "HOTL"
    Der Unterschied ist das die JOIN Bedingung mit in die FROM Klausel wandert.

    Zitat von Catzenjaeger Beitrag anzeigen
    das Datum ist verschlüsselt
    Das ist nicht verschlüsselt, das ist ein Unix Timestamp (Sekunden seit 1970). Prinzipiell haben die aber nix in eine Datenbank zu suchen. Es gibt für Datumsangaben Datentypen auf die die Datenbank optimiert ist und entsprechende Funktionen mitliefert. Du kannst aber mit FROM_UNIXTIME()/UNIX_TIMESTAMP() das Datum konvertieren.

    Z.B.:

    WHERE
    report_receipt.sSpesenart = "HOTL" AND
    report_trip.iStartDatum > UNIX_TIMESTAMP('2014-01-01 00:00:00')

    Einen Kommentar schreiben:


  • Catzenjaeger
    antwortet
    Das ist meine Abfrage wobei ich den Wert für das Datum in Excel berechnet habe - heißt 1388530800 entspricht 31.12.2013.ich möchte mir als alles was nach 31.12.2013 aufgelaufen ist und HOTL ist anzeigen lassen.

    SELECT
    report_receipt.iId,
    report_trip.sOrt,
    report_trip.sLand,
    report_receipt.sTripId,
    report_trip.iStartDatum,
    report_trip.iEndDatum,
    report_trip.iDauer,
    report_receipt.fBetrag

    FROM report_receipt , report_trip , report_tripselect
    WHERE report_receipt.iId = report_trip.iId
    and report_tripselect.iId = report_receipt.iId
    and report_receipt.sSpesenart = "HOTL"
    and report_trip.iStartDatum > "1388530800"
    ich bekomme zu viele Daten - aber warum???

    ich mache das in heidi - dort gibt es ein Feld heisst: Query und drucke dann auf ausführen

    ich habe mir mal die Daten angeschaut und meine das einige doppelt sind

    1234000;"Forchheim, Dombühl";"DE";"1600103167";"1388962800";"138904920 0";"2";"69.5"
    1234000;"Forchheim, Dombühl";"DE";"1600103167";"1388962800";"138904920 0";"2";"7.5"

    das verstehe ich nicht - könnte auch sein das das zweite das Frühstück ist was extra abgerechnet wurde

    Einen Kommentar schreiben:


  • wolf29
    antwortet
    so habe mal alles umbenannt - jetzt kommt noch ein Fehler
    Welcher?

    ist meine Abfrage jetzt richtig? ich bin mir nämlich bei den Bedingungen unten nicht sicher
    siehst du doch anhand des Ergebnisses!? Führst du das in phpmyadmin aus?

    mfg wolf29

    Einen Kommentar schreiben:


  • Catzenjaeger
    antwortet
    so habe mal alles umbenannt - jetzt kommt kein Fehler und eine Liste

    Code:
    SELECT 
    report_receipt.iId, 
    report_trip.iStartDatum, 
    report_trip.iEndDatum, 
    report_trip.iDauer, 
    report_receipt.sTripId, 
    report_trip.sFileId, 
    report_trip.sLand, 
    report_trip.sOrt, 
    report_receipt.fBetrag, 
    report_trip.sBukrs
    
    FROM report_receipt , report_trip , report_tripselect 
    
    WHERE report_receipt.iId = report_trip.iId 
    and report_tripselect.iId = report_receipt.iId 
    and report_receipt.sSpesenart = "HOTL"
    wie würde das mit innerjoin aussehen?
    ist meine Abfrage jetzt richtig? ich bin mir nämlich bei den Bedingungen unten nicht sicher

    weitere Frage _ ich würde die Datenmenge gerne eingrenzen doch das Datum ist verschlüsselt. --> 1270850400
    In Excel mache ich das mit einer Formel
    = Q2 / 86400 + 25569

    Einen Kommentar schreiben:


  • erc
    antwortet
    Das stimmt so nicht. In dem Query steht c.sSpesenart='HOTL', das Feld kommt aber nur in Tabelle 1 vor und nicht in Tabelle 3. Du bringst dich mit den Aliasen/Umbennen der Tabellen selbst durcheinander, lass das einfach. Wenn die Tabelle report_trip heißt dann verwende doch einfach den Namen report_trip.

    Einen Kommentar schreiben:


  • Catzenjaeger
    antwortet
    Danke für eure Anworten. Ja die Tabellen heißen so.
    Ich dachte damit: report_trip a, report_tripselect b, report_receipt c
    kann ich das zuweisen welche Tabelle welche ist. Sorry ich bin Anfänger
    Mit Joins habe ich noch nicht richtig gerafft
    Ich habe zwar unzählige Beispiele gefunden aber ich verstehe die Logik noch nicht ganz

    Tabelle 1 = report_trip = a ???
    iId,iReceiptDate,iAccountingDate,fBetrag,sTripId,i Version,sSpesenart,sBeschreibung,sDVCode,sBUCode,s BLCode,sBuKrs,sCostTypeNew,iCompanyCode,sFileId

    Tabelle 2 = report_tripselect = b ???
    iId,iAccountingDate,sFileId,sTripId,iVersion,iActu alVersion,sLand,sOrt,iStartDatum,iEndDatum,iKm,iDa uer,sBukrs,sBUCode

    Tabelle 3 = report_receipt = c ???
    iId,sTripId,iVersion

    Einen Kommentar schreiben:


  • erc
    antwortet
    Ganz offensichtlich ja nicht! Vielleicht solltest du das mit a b c einfach lassen und die richtigen Tabellennamen verwenden...

    PS: Man kann nicht nachvollziehen was Tabelle1/2/3 in deinem Query ist!. Ich würde behaupten c = Tabelle 1, b = Tabelle 3, a = Tabelle 2

    Einen Kommentar schreiben:


  • wolf29
    antwortet
    Hi,

    heißt deine 2. Tabelle report_tripselect? Warum arbeitest Du nicht direkt mit JOIN?!

    mfg Wolf29

    Einen Kommentar schreiben:

Lädt...
X