Topic: duomenų išrinkimas iš dviejų lentelių

sveiki. iškilo man tokia problemėlė :) gal kas nors žinot kaip mysql išrinkti duomenis iš dviejų lentelių, jos yra vienodos ,vienodais stulpelių vardais, tik žinoma skiriasi patys stulpeliuose esantys duomenys. kai taip yra aš nežinau kokią jungimo sąlygą parašyti,  kad veiktų programa, gal turi kokių minčių? :)

Re: duomenų išrinkimas iš dviejų lentelių

select uzklausoje rasyk prie stulpelio pavadinimo dar ir lenteles pavadinima. O taip pat abi lenteles sujunk su JOIN. Paskaityk google apie SQL join ir pilna sintakse (SELECT lentele1.laukelis, lentele2.laukelis FROM **** (tolesnis atsakymas google) *** )

Re: duomenų išrinkimas iš dviejų lentelių

esmė ta, kad aš parašau

 select * from lentelė1 join lentelė 2
on (nebežinau ką rašyti, nes duomenų vienodų nėra)
where duom_tipas=2 and sektorius='s121';

Man reikia sukurti tokią užklausą, kad reiktų where pakeisti, kai ko nors ieškosiu. labai senai mokiausi šia programa dirbti, dėl to nelabai susigaudau šioje situacijoje. būčiau labai dėkinga, jei kažką plačiau paaiškintum.

Re: duomenų išrinkimas iš dviejų lentelių

lenteles jungiamos per kazkoki viena (bendra) stulpeli. Daznai tai buna koks nors ID. Jis yra vienoje lenteleje kaip unikalus stulpelis, ir jis kartojasi kitoje lenteleje. Tesk skaityma google :)

Re: duomenų išrinkimas iš dviejų lentelių

man reikia naudojant union :)

Re: duomenų išrinkimas iš dviejų lentelių

Tau reikia tiesiog sumesti duomenis is vienos lenteles ir duomenis is kitos lenteles i bendra kruva? Tuomet atsakyma parasei: naudok union. Google tau pades.

Re: duomenų išrinkimas iš dviejų lentelių

dėkui :) info radau forume :) manau paskubėjau šiek tiek, reikėjo paskaityti prieš tai čia ;)

Re: duomenų išrinkimas iš dviejų lentelių

gal galit pasakyti kodėl neveikia

SELECT
SUM(SR) AS "PILNAS" FROM (SELECT ID, DUOM_TIPAS, STRAIPSNIS, PS_ERDVE, SEKTORIUS, PRIEMONE,
 SR, LAIKOTARPIS
FROM ISSS_ATASKAITA
UNION SELECT ID, DUOM_TIPAS, STRAIPSNIS, PS_ERDVE, SEKTORIUS, PRIEMONE, SR, LAIKOTARPIS
FROM ISSS_ATASKAITA_F06) AS "NAUJAS"

WHERE DUOM_TIPAS=2 ;

Re: duomenų išrinkimas iš dviejų lentelių

grikis wrote:

gal galit pasakyti kodėl neveikia

SELECT
SUM(SR) AS "PILNAS" FROM (SELECT ID, DUOM_TIPAS, STRAIPSNIS, PS_ERDVE, SEKTORIUS, PRIEMONE,
 SR, LAIKOTARPIS
FROM ISSS_ATASKAITA
UNION SELECT ID, DUOM_TIPAS, STRAIPSNIS, PS_ERDVE, SEKTORIUS, PRIEMONE, SR, LAIKOTARPIS
FROM ISSS_ATASKAITA_F06) AS "NAUJAS"

WHERE DUOM_TIPAS=2 ;

O klaidas tu "gaudai"? Siaip turejo tau ismesti klaida del sintakses.

Re: duomenų išrinkimas iš dviejų lentelių

gaudau klaidas, viskas yra del pavadinimo as naujas, bet atrodo apsirasau teisingai

Re: duomenų išrinkimas iš dviejų lentelių

Pirmiausia pasidaryk veikiančias individualias užklausas, kad jos veiktų atskirai, o tik poto sujunk jas per UNION. Pirmoje lentelėje 2 FROM skyriai...

Re: duomenų išrinkimas iš dviejų lentelių

pasidariau ir gaunu dvi sumas, o eina sumoje dar suma panaudoti, kad gauciau viena atsakyma

SELECT
SUM(SR) AS "PILNAS" FROM ISSS_ATASKAITA
WHERE PRIEMONE='F99'AND SEKTORIUS='S1313'
UNION SELECT
SUM(SR) AS "PILNAS" FROM ISSS_ATASKAITA_F06
WHERE  PRIEMONE='F99' AND SEKTORIUS='S1313';

Re: duomenų išrinkimas iš dviejų lentelių

grikis wrote:

pasidariau ir gaunu dvi sumas, o eina sumoje dar suma panaudoti, kad gauciau viena atsakyma

SELECT
SUM(SR) AS "PILNAS" FROM ISSS_ATASKAITA
WHERE PRIEMONE='F99'AND SEKTORIUS='S1313'
UNION SELECT
SUM(SR) AS "PILNAS" FROM ISSS_ATASKAITA_F06
WHERE  PRIEMONE='F99' AND SEKTORIUS='S1313';

Tai koks tada tikslas daryti per UNION su dviem užklausom? Gali per vieną užklausą gauti bendrą sumą, tik visas sąlygas teisingai surašyti į WHERE.

Re: duomenų išrinkimas iš dviejų lentelių

tai aš bandžiau ir taip paprastai padaryti, taip man gaunasi vienas rezultatas, bet jis yra neteisingas.

SELECT SUM(ISSS_ATASKAITA.SR)+SUM(ISSS_ATASKAITA_F06.SR)
FROM ISSS_ATASKAITA, ISSS_ATASKAITA_F06
WHERE
(ISSS_ATASKAITA.DUOM_TIPAS = 2 AND ISSS_ATASKAITA_F06.DUOM_TIPAS = 2)
AND
(ISSS_ATASKAITA.PS_ERDVE='A1'  AND ISSS_ATASKAITA_F06.PS_ERDVE='A1');

15 (edited by Ajaks 2012-02-08 16:02:09)

Re: duomenų išrinkimas iš dviejų lentelių

Kur tas SQL rezultatas isvedamas? i php?

Jeigu gali, tai sumuok toje terpeje kuri gauna rezultata.

Kitas variantas:

SELECT SUM(SR) AS SUMPILNAS FROM
(
SELECT
PILNAS FROM ISSS_ATASKAITA
WHERE PRIEMONE='F99'AND SEKTORIUS='S1313'
UNION ALL
SELECT
PILNAS FROM ISSS_ATASKAITA_F06
WHERE  PRIEMONE='F99' AND SEKTORIUS='S1313'
) AS S1;

Re: duomenų išrinkimas iš dviejų lentelių

turiu tokią užklausą :

DELIMITER $$
DROP PROCEDURE IF EXISTS `TESTO` $$
CREATE PROCEDURE `TESTO`()
BEGIN
DECLARE i INT  DEFAULT 0;
DECLARE KIEKIS INT DEFAULT 0;
SET KIEKIS=(SELECT COUNT(KODAS) FROM ISSS_SR I);
WHILE i<KIEKIS DO
PREPARE uzklausa FROM 'SELECT KODAS, RF FROM ISSS_SR LIMIT ?, 1 into @KODAS_1, @FORMULE';
SET @a = i;
EXECUTE uzklausa using @a;
PREPARE uzklausa3 FROM 'UPDATE ISSS_SR SET SR=@FORMULE WHERE KODAS=@KODAS_1';
EXECUTE uzklausa3;
SET i=i+1;
DEALLOCATE PREPARE uzklausa;
DEALLOCATE PREPARE uzklausa3;
END WHILE;
END $$
DELIMITER ;

Man reikia gauti SR. @FORMULE yra užklausa :

SELECT(SELECT
SUM(SR)  FROM ISSS_ATASKAITA
WHERE DUOM_TIPAS=2 AND STRAIPSNIS = 292 AND SEKTORIUS= 'S1312' AND PRIEMONE='F7') + (SELECT
SUM(SR) FROM ISSS_ATASKAITA_F06
WHERE  DUOM_TIPAS=2 AND STRAIPSNIS = 3040 AND SEKTORIUS= 'S1314' AND PRIEMONE='F99')

Kiekvienam kodui yra skirtinga ši užklausa. Dabar su tokia užklausa man į SR stulpelį įrašo ne @FORMULE atsakymą, o tiesiog pačias formules.
Gal turit kokių patarimų kaip padaryti, kad man pirmiausia suskaičiuotų, o po to įrašytų atsakymą į SR.