join problem

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

  • join problem

    also - ich hab da ein "inner join" statement.
    ich hab wirklich lange rumprobiert, bekomms aber nicht hin.
    sql gibt mir bei diesem statement immer ein paar datensaetze aus, die einen anderen yardnamen haben ???
    PHP-Code:
    SELECT sam_bestellung.customernrsam_bestellung.projnrsam_bestellung.yard
    sam_bestellung.hullmonth(plannedmonthmymonthpl  FROM sam_date_val INNER JOIN 
    sam_bestellung ON sam_date_val
    .projnr=sam_bestellung.projnr AND
    sam_date_val.customernr=sam_bestellung.customernr WHERE 
    sam_bestellung
    .yard='Hindustan' AND sam_date_val.plannedmonth BETWEEN 
    DATE 
    '2006-01-01'AND DATE '2006-12-31'  
    OR sam_date_val.actdeldate BETWEEN DATE '2006-01-01' AND DATE '2006-12-31' 
    es liegt daran das ich zwar der datenbank sage, projnr und customernr sollen gleich sein... aber ich dopple die projnr.
    nur die kombination aus beidem darf sich nicht doppeln.
    die beiden felder sind bei mir als unique gesettet (also die kombi aus beiden). laesst sich das irgendwie mit index oder primary loesen?
    ich hab das eigneltich schon versucht - aber ich bekomme auch immer die ausgabe, das prim. und unique eigneltich nicht auf dme gleichen feldern sien sollen
    Zuletzt geändert von joeCrack; 21.02.2006, 07:01.
    Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
    aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

  • #2
    also - noch mal anders, ich weiss mit sonem langen statement is das nicht nachzuvollziehen. ich hba jetzt ein auto-increment feld in bieden tabellen hinzugefuegt, damit es eine eindeutige indetifizierung durch EIN gleiches feld gibt ("datvalno" in diesem fall).
    so nun gebe ich als erstes query dieses hier ein.
    PHP-Code:
    SELECT sam_bestellung.customernrsam_bestellung.projnrsam_bestellung.yard
    sam_bestellung.hull FROM sam_date_val INNER JOIN sam_bestellung ON 
    sam_bestellung
    .datvalno=sam_date_val.datvalno 
    WHERE sam_bestellung
    .yard='ChengXi' 
    Dieses Statement funktioniert.
    Nun haenge ich an das vorherige query folgendes an:
    PHP-Code:
    AND sam_date_val.plannedmonth
    BETWEEN DATE 
    '2006-01-01'
    AND DATE '2006-12-31'
    OR sam_date_val.actdeldate
    BETWEEN DATE 
    '2006-01-01'
    AND DATE '2006-12-31' 
    Jetzt bekomme ich datensaetze ausgegeben bei der der "YARD" nicht "ChengXi" ist (wie oben zu sehen). Bei diesen Datensaetzen, die hier faelschlich ausgegeben werden doppelt sich eine voellig belanglose Varibale. Kann das evtl. daranliegen?
    Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
    aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

    Kommentar


    • #3
      Probiere es mal hiermit:


      Code:
      WHERE(
            (sam_bestellung.yard='ChengXi' 
            AND sam_date_val.plannedmonth
            BETWEEN DATE '2006-01-01'
            AND DATE '2006-12-31')
      OR 
            (sam_bestellung.yard='ChengXi' 
            AND
            sam_date_val.actdeldate
            BETWEEN DATE '2006-01-01'
            AND DATE '2006-12-31')
      )
      EDIT:
      falls das dein Problem behebt, solltest du bedenken, das AND stärker bindet als OR, was du mit den klammern wieder wett machen kannst

      also ging auch das:
      Code:
      WHERE(
            sam_bestellung.yard='ChengXi' 
            AND
            ((sam_date_val.plannedmonth
            BETWEEN DATE '2006-01-01'
            AND DATE '2006-12-31')
            OR 
            (sam_date_val.actdeldate
            BETWEEN DATE '2006-01-01'
            AND DATE '2006-12-31'))
      )
      hoffe ich habe keine klammer vergessen !!!

      Zuletzt geändert von McPunk; 23.02.2006, 04:25.

      Kommentar


      • #4
        hab ich noch nie vorhher was von gehoert !
        aber kappt - vielen dank
        Zwei Dinge sind unendlich: das Universum und die menschliche Dummheit;
        aber bei dem Universum bin ich mir noch nicht ganz sicher. (Albert Einstein)

        Kommentar

        Lädt...
        X