[V4RB 0000496]: SQL-Problem
    Ivan Smahin 
    IvanSmahin at public.kherson.ua
       
    Mon Feb 28 20:15:58 CST 2005
    
    
  
Hello Claudius,
Monday, February 28, 2005, 5:31:30 PM, you wrote:
CS> Hi Ruslan,
CS> Am 27. Feb 2005 um 11:58 Uhr schrieb Ruslan Zasukhin:
>> On 2/27/05 12:39 PM, "vbt at paradigma.ukrcom.kherson.ua"
>> <vbt at paradigma.ukrcom.kherson.ua> wrote:
>>
>>> Summary:                    SQL-Problem
>>> Description:
>>> Following Code has result 0 records
>>>
>>> SELECT KO.Konto_Typ, KZ.Konto_Typ, B.Kategorie_ID, B.Betrag FROM 
>>> Buchungen
>>> B, Konten KO, Konten KZ
>>> WHERE B.Herk_Konto=KO.RecID
>>> AND B.Ziel_Konto=KZ.RecID
>>> AND B.Deleted='0'
>>> AND B.BDatum<='27.02.2005'
>>>
>>> but it should have a lot
>>
>> Hi Claudius,
>>
>> I will recommend redo query using new SQL92 syntax of joins.
>> This make query more clean.
>>
>>
>> SELECT
>>     KO.Konto_Typ, KZ.Konto_Typ, B.Kategorie_ID, B.Betrag
>> FROM
>>     Buchungen B join Konten KO ON B.Herk_Konto=KO.RecID
>>                 join Konten KZ ON B.Ziel_Konto=KZ.RecID
>> WHERE
>>     B.Deleted='0' AND B.BDatum<='27.02.2005'
CS> faster too?
CS> I don't know SQL92 syntax. I am a sybase hacker with learning by seeing
CS> and rebuilding ;-))
CS> The syntax you show me is a little bit confusing me.
CS> How is it realized when I want to do following?
CS> SELECT KO.Konto_Typ, KZ.Konto_Typ, B.Kategorie_ID, B.Betrag
CS> FROM Buchungen B, Konten KO, Konten KZ
CS> WHERE B.Herk_Konto=KO.RecID
CS> AND B.Ziel_Konto=KZ.RecID
CS> AND KO.Konto_Type = 1
CS> AND B.Deleted='0'
CS> AND B.BDatum<='27.02.2005'
CS> is it then
CS> SELECT
CS>      KO.Konto_Typ, KZ.Konto_Typ, B.Kategorie_ID, B.Betrag
CS> FROM
CS>      Buchungen B join Konten KO ON B.Herk_Konto=KO.RecID
CS>                  join Konten KZ ON B.Ziel_Konto=KZ.RecID
CS> WHERE KO.Konto_Type=1
CS> AND B.Deleted='0' AND B.BDatum<='27.02.2005'
CS> in other words, when I have in restrictions something from joined 
CS> tables? where is this written?
CS> bye
CS> Claudius
Actually, I'm also much more closer to the Sybase community :)
But here is two possible forms of join query (following SQL-92)
1)
----------
Select
      ...
FROM
    T1, T2
WHERE
     T1.f1 = T2.f2
----------
2)
----------
Select
      ...
FROM
    T1 inner join T2 on T1.f1 = T2.f2
----------
It might be nice till we have deal with 2-table join.
But for many-tabled-join it is not so attractive to write (and read later!)
such quasi-English sentences. (As you know, the main SQL goal was to have something
like plain english text.)
IMHO it must be your decission what way do you like.
About performance.
I don't think you get notable difference.
But in second way it will be a little bit faster, because Valentina wouldn't parse
WHERE clause to find "join conditions". As for me I would use the way which I
used to.
Moreover, in you query, second way might seems a bit awful:
SELECT
      KO.Konto_Typ, KZ.Konto_Typ, B.Kategorie_ID, B.Betrag
FROM
    Konten KZ INNER JOIN
        (Buchungen B inner join Konten KO ON B.Herk_Konto=KO.RecID )
    ON B.Ziel_Konto=KZ.RecID
WHERE
     B.Deleted='0'
     AND B.BDatum<='27.02.2005'
-------------
Also, you should note that Valentina has some extensions here!
If single link exists between two tables you can use short forms for
inner joins - this link will be used automaticaly:
Persons                Addresses
--------               -----------
Name    ObjectPtr       RecID      City
------------------------------------------
Smith       3            1          NULL
Smith       4            2          Limerick
O'Konnor    2            3          NYC
                         4          Dublin
-------------------------------------------
--
select * from Persons, Addresses
--
Result:
Name    ObjectPtr       City
------------------------------------------
Smith       3            NYC
Smith       4            Dublin
O'Konnor    2            Limerick
                         
-- 
Best regards,
 Ivan                            mailto:IvanSmahin at public.kherson.ua
    
    
More information about the Valentina-beta
mailing list