Autor Téma: IBExprt - rozseká funkciu na drobné  (Přečteno 2544 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2786
  • Karma: 26
    • Verze Delphi: XE7 professional
IBExprt - rozseká funkciu na drobné
« kdy: 04-03-2013, 09:49:27 »
Prečo mi, presnejšie ako tomu zabrániť
Kód: SQL [Vybrat]
  1.     SELECT Flats.Idflats, Flats.Hotarea, Flats.Allarea, Flats.Fuoarea,
  2.        Persones.Person1,
  3.        CASE WHEN (Persones.Person2 IS NULL) THEN 0 ELSE Persones.Person2 END AS Person2,
  4.        CASE WHEN (Persones.Person3 IS NULL) THEN 0 ELSE Persones.Person3 END AS Person3,
  5.        CASE WHEN (Persones.Person4 IS NULL) THEN 0 ELSE Persones.Person4 END AS Person4
  6.      FROM Landlords
  7.        INNER JOIN Flats ON (Landlords.Fkflat = Flats.Idflats)
  8.        LEFT OUTER JOIN Persones ON (Landlords.Idlandlords = Persones.Fklandlords)
  9.      WHERE Landlords.Fksvb = 4
  10.      
  11. TO príkaz CASE rozseká na drobné?
  12.      
  13. SELECT
  14.     Flats.Idflats,
  15.     Flats.Hotarea,
  16.     Flats.Allarea,
  17.     Flats.Fuoarea,
  18.     Persones.Person1,
  19.     CASE WHEN,
  20.     (Persones.Person2 IS NULL, ) THEN,
  21.     0 ELSE,
  22.     Persones.Person2 END,
  23.     AS Person2,
  24.     CASE WHEN,
  25.     (Persones.Person3 IS NULL, ) THEN,
  26.     0 ELSE,
  27.     Persones.Person3 END,
  28.     AS Person3,
  29.     CASE WHEN,
  30.     (Persones.Person4 IS NULL, ) THEN,
  31.     0 ELSE,
  32.     Persones.Person4 END,
  33.     AS Person4
  34. FROM Persones
  35.    RIGHT OUTER JOIN Landlords ON (Persones.Fklandlords = Landlords.Idlandlords)
  36.    INNER JOIN Flats ON (Landlords.Fkflat = Flats.Idflats)
  37. WHERE
  38.    (
  39.       (Landlords.Fksvb = 4)
  40.    )
  41.  
Predpokladám, že sa to týka aj všetkých ostatných funkcií
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Mi.Chal.

  • Guru
  • *****
  • Příspěvků: 566
  • Karma: 23
Re:IBExprt - rozseká funkciu na drobné
« Odpověď #1 kdy: 04-03-2013, 10:52:20 »
nepochopil jsem, na co se ptáš. Ale místo "case when neco is null then 0 else neco end" můžeš napsat "coalesce(neco, 0)", případně existují různé db-specific funkce. Třeba na mssql isnull, na mysql ifnull. Coalesce by ale mělo fungovat snad všude.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2786
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:IBExprt - rozseká funkciu na drobné
« Odpověď #2 kdy: 04-03-2013, 11:13:49 »
  • Citace
    nepochopil jsem, na co se ptáš.
    Citace
    [/q][/q]
  • Na toto:
Kód: SQL [Vybrat]
  1. CASE WHEN,    (Persones.Person2 IS NULL, ) THEN,    0 ELSE,    Persones.Person2 END,    AS Person2
  • všimni si tie nasekané čiarky
« Poslední změna: 04-03-2013, 11:18:21 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline pf1957

  • Padawan
  • ******
  • Příspěvků: 1761
  • Karma: 77
    • Verze Delphi: D2007, XE3, DX10
Re:IBExprt - rozseká funkciu na drobné
« Odpověď #3 kdy: 04-03-2013, 11:55:48 »
všimni si tie nasekané čiarky
Ja te otazce taky nerozumim: co s tim IBE delas? Jedine, co my dava smysl je, ze pokousis Format Query Text.
Ja to nikdy k nicemu nepouzil, az ted na zkousku. Sice mi to case rozdeli tak, ze kazda vetev je odsazena samotnem radku, ale zadne carky tam nemam.
Pouzivam verzi Pro.

BTW, nehral sis s nejakym nastaveni toho formatovace (set default nepomuze)?

« Poslední změna: 04-03-2013, 12:07:16 od pf1957 »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2786
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:IBExprt - rozseká funkciu na drobné
« Odpověď #4 kdy: 04-03-2013, 12:04:28 »
Z Delphi skopírujem text SQL, alebo ho napíšem ručne v Query builder. Potom dám comit - zelená fajka. Výsledkom sú tie doplnené čiarky. Robí mi to na dvoch strojoch.
Mám Desktop Edition ver. 2012.5.19.1
Format Query Text - na to sa pozriem. Nejaké zmeny som robil, ale pokiaľ si pamätám, tak som iba dal menšie odsadenie textu od okraja.
Dokonca mi rozhodí aj First(1)  na
First,
(1, )
Vždy tam doplní aj medzeru.
 
Nič nepomáha. Ani Default hodnoty. Stačí sa prepnúť medzi edit a builder stránkou a späť. A je to tam
 
« Poslední změna: 04-03-2013, 12:35:16 od Stanislav Hruška »
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 2786
  • Karma: 26
    • Verze Delphi: XE7 professional
Re:IBExprt - rozseká funkciu na drobné
« Odpověď #5 kdy: 04-04-2013, 10:50:11 »
Niečo som zistil.

Ak pre WHERE poskladám výraz v časti "Criteria" a nie v "Edit", tak to je v poriadku. Predpokladám, že to bude platiť aj pre SELECT.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

 

S rychlou odpovědí můžete používat BB kódy a emotikony jako v běžném okně pro odpověď, ale daleko rychleji.

Upozornění: do tohoto tématu bylo naposledy přispěno před 120 dny.
Zvažte prosím založení nového tématu.

Jméno: E-mail:
Ověření:
Křestní jméno zpěváka Gotta: