[FB] Podzapytania, nagla zmiana

0

Podzapytanie dzialalo do dnia dzisiejszego ?
Mam tabele TabA, TabC, TabB

SELECT TabA.ID,  TabA.Pole2 ,
  (  SELECT FIRST 1 TabC.PoleX FROM TabC, TabB
           WHERE TabC.P1=TabB.P1 AND TabA.Pole2=TabB.Pole2
  ) AS WEEEE
FROM TabA 

daje w WEEEE nulle, ale jak pobiore z zapytania TabA.Pole2, wstawie recznie

SELECT FIRST 1 TabC.PoleX FROM TabC, TabB   WHERE TabC.P1=TabB.P1 AND (recznie wpisane TabA.Pole2) =TabB.Pole2

to jakas wartosc jest ?

Tak jakby czasami nie widzialo pola w podzapytaniu z zewnatrz.
Mam pytanie gdzie sie zagubilem ? Czemu dzialalo i nagle przestalo (nie bylu upgradu chyba ze tajny ...) ?

0

w podzapytaniu nie masz sortowania. optymalizator w fb <2.0 jest kulawy. być może układa sobie inny plan i zwraca w innej kolejności rekordy

btw daj jakieś przykładowe dane

0

W orginale mam ORDER BY XXXX DESC
i to co powino byc jesli teraz wykonam w proc skaldowanej > into jest ok, kiedys bylo ok w podzapytaniu

//najbardziej mnie w....., ze sie z dnia na dzien polozylo bo wszytsko bylo w proc sklad
w przyblizeniu
SELECT *, (SELECT ... ORDER BY) FROM ... INTO ....
FOR
B
E

teraz jest

SELECT * FROM INTO
FOR
B
SELECT ... ORDER BY
E

i tez OK, ale czemu ?????

moze uda mi sie sklecic mini przyklad, ale czuje ze ten bedzie dzialal

BTW. FB 2.1.1 for Win

0

.... po wakacjach wrocilem do problemu ...

i po zoptymalizowaniu dziala, jednak sprawa jest i tak dziwna (czytajac w dokumentacji bugow czesto FB mial problemy z podzapytaniami .

Nie dzialajace zapytanie (uproszczone) (od pewnego czasu, widocznie ilosc rekordow ma tu znaczenia, albo wspominane czesto tu bledy z d**y)

SELECT ... FROM A AS AA JOIN B AS BB ON AA WHERE (SELECT FIRST 1 ... FROM C, B WHERE AA.1 = B.1 AND C.1=B.2 AND INNE WARUNKI ORDER BY ...) = 1

problem byl w nieoptymalnym zapytaniu ale to nie powinno nic zmieniac (bez sensu odwolanie do B dwa razy, ale tak to jest jak sie dostaje bez dokumentacji baze i do konca nie wiadomo o co biega)

po zmianie na

SELECT ... FROM A AS AA JOIN B AS BB ON AA WHERE (SELECT FIRST 1 ... FROM C WHERE C.1=BB.2 AND INNE WARUNKI ORDER BY ...) = 1

smiga OK. Najbardziej jednak ciekawi mnie to czemu sie zmienilo z dnia na dzien !!! Jeszcze nie sprawdzalem jak sie wywali troche danych bo nie mam na to sil.

1 użytkowników online, w tym zalogowanych: 0, gości: 1