1 (edited by gintarinis 2010-12-28 08:37:39)

Topic: du select'ai

Sveiki, uzveskit ant kelio kaip sujungti 2 selektus:

SELECT COUNT(*) as n, saskaita_a FROM pavedimai WHERE saskaita_a ='654654654654' and tipas ='A' GROUP BY saskaita_a
SELECT COUNT(*) as s, saskaita_b FROM pavedimai WHERE saskaita_b ='789987789987' and tipas ='B' GROUP BY saskaita_b

uzklausos tikslas: isrinkti ir suskaiciuoti visas operacijas (jei buvo pavedimai) IS saskaita_a I saskaita_b (tipas A) ir atvirksciai IS saskaita_b I  saskaita_a (tipas B)

lenteles struktura:

saskaita_a      tipas     saskaita_b
45665465654     B       32132132132
65465465465     A       456654456654
ir t.t.

Aciu.. :)

Re: du select'ai

Tuos SELECT'us sujungti tai nesunku, tik nelabai aišku kaip tu juos nori sujungti, t.y. kokį rezultatą gauti, ar vienoje eilutėje ar ne.

Kitas dalykas, iš tavo tų SELECT'ų nesimato, kad tu čia kaip nors gautum galutinį rezultatą, bent jau aš nematai, kaip tu čia gauni visus variantus.

Beje, nepergyvenk, jeigu neišeina visko padaryti per vieną užklausą - ateity sukursi geresnę duomenų schemą ir nekils tokių problemų, o dabar gali naudotis dviem užklausom - geriau dvi greitos užklausos, negu viena lėta (-;

Re: du select'ai

Taip, man reikia gauti rezultatus vienoje eiluteje.
Yra failas kurio struktura:
saskaita_a, tipas, saskaita_b, suma, ir t.t. - sablonas .. :) Ji nuskaitau ir isrenku kas reikalinga..

Dali sprendimo gaunu taip:

SELECT saskaita_a, saskaita_b, count(*) as kiek  FROM operacijos WHERE saskaita_b='$nr' and tipas ='A') GROUP BY saskaita_a, saskaita_b";

man isrenka saskaitas_a ir suskaiciuoja kiek operaciju buvo padaryta i saskaita_b, pakeitus selecta gauni kitus skaicius, taciau kaip juos sujungti ir viska gauti vienu selektu.......

Esu mates taip padaryta - tik programeris nesidalijo mintimis... :-) Piktas buvo.. :)

Re: du select'ai

Aš jeigu nemokėčiau/negalėčiau kitaip, tai daryčiau taip, kaip išeina:

SELECT 1 AS kiek;
SELECT 2 AS kiek;

sujungčiau:

SELECT SUM(kiek) AS kiek
FROM (
  SELECT 1 AS kiek
  UNION ALL
  SELECT 2 AS kiek
  ) tmp

O kaip padaryti teisingai tai turėsi pats sugalvoti, kai prispirs reikalas (-;