1 (edited by Ramex 2008-06-04 12:14:30)

Topic: dvi užklausos

yra uždavinukas ir jam spręsti aš nesugalvoju kito varianto, kaip tik dviejų užklausų pagalba. bet gal visgi aš klystu...
sakykim yra dvi lentelės:

#1 įmonės:
id | pavadinimas
----------------------
1  | maxima
2  | rimi
3  | norfa
...

#2 prekės:
id | imones_id | pavadinimas | kiekis | kaina | ...
--------------------------------------------------------------
1  | 1              | pienas          | 100    | 3.0    |
2  | 1              | kiausiniai      | 1000  | 4.8    |
3  | 2              | duona          | 200     | 3.0    |
...

ir man reikia maždaug tokio rezultato:
maxima - pienas...
               kiausiniai...
rimi       - duona...

turbūt neįmanoma kintamą kiekį parametrų per vieną užklausą gaut. na kaip aš sugalvoju, tai traukt įmones ir per ciklą jau traukt kiekvineos įmonės prekes. ar įmanoma kitaip..?

Su sąlyga, kad šūdo nebus...

Re: dvi užklausos

Darai INNER JOIN'ą, ir duomenis papildomai rūšiuoji pagal imones_id ar pavadinimą.

Gausi rezultatus:

maxima - pienas
maxima - kiausiniai
rimi   - duona

Teliks tik išvedimo metu nerodyti pasikartojančių pavadinimu...

O tokio dalyko, kaip kintamas stulpelių kiekis rezultatuose tai NėRA. (-; Na bent jau aš kol kas nesusidūriau..

Re: dvi užklausos

blemba, tiksliai =] kažkaip dar sunkiai priprantu prie tų join'ų. ačiū

Su sąlyga, kad šūdo nebus...

Re: dvi užklausos

dar tokia problemėlė:
tarkim aš join'inu dvi lenteles, ir vienoj iš join'inamų lentelių kriterijus parenkamas pagal kitos duomenis. kaip tokiu atveju sulipdyti užklausą?

Su sąlyga, kad šūdo nebus...

Re: dvi užklausos

Apie tai jau buvo kalbėta čia: http://www.mysql.lt/forumas/viewtopic.php?id=545

6 (edited by Ramex 2008-06-04 17:00:28)

Re: dvi užklausos

na man biški ne to reikėjo, bet išsisprendžiau, viskas kur kas paprasčiau nei aš maniau =]
na dėl visa ko užmesk akį į užklausą, gal įmanoma paprasčiau:

SELECT 
            order_list.deal AS deal, 
            order_list.deal_price AS price, 
            orders.cid AS cid, 
            orders.adrress AS adrress, 
            orders.date AS date, 
            clients.name AS name
        FROM order_list 
            LEFT JOIN orders 
                ON orders.status='check'
            LEFT JOIN clients
                ON clients.cid=orders.client_id
        WHERE order_list.order_id=orders.cid

esminės yra abi join'inamos lentelės, nes antroje naudojami duomenys iš pirmos. kaip paaiškėjo, kai naudojami duomenys iš anksčiau join'intos lentelės, užklausa veikia. atrodo taip viskas

Su sąlyga, kad šūdo nebus...