Topic: Užklausa užklausoje?
Sveiki,
Gal kas galite parodyti užklausos užklausoje formavimo pavyzdį. Mano atveju operuočiau vienoje lentelėje.
Dėkui
PHP ir MySQL programavimas, SQL užklausos, duomenų bazės, PHP scriptai, pagalba, diskusijos, pamokos ir straipsniai.
You are not logged in. Please login or register.
PHP ir MySQL → SQL užklausos ir duomenų struktūros → Užklausa užklausoje?
Sveiki,
Gal kas galite parodyti užklausos užklausoje formavimo pavyzdį. Mano atveju operuočiau vienoje lentelėje.
Dėkui
SELECT COUNT(mazgo_pav) FROM sujungimai
where mazgo_pav=(SELECT mazgo_pav, Is_A_pav
FROM sujungimai
WHERE sujungimai.tipas_ID = '1'
GROUP BY mazgo_pav, Is_A_pav) GROUP by mazgo_pav
Vykdant tokia užklausą metą klaidą: Operand should contain 1 column(s)
Principe su pirma užklausa gaunu tokia lentelę
SELECT mazgo_pav, Is_A_pav
FROM sujungimai
WHERE sujungimai.tipas_ID = '1'
GROUP BY mazgo_pav, Is_A_pav
| mazgo_pav | Is_A_pav |
--------------------------------
fff 1
fff 21
fff 22
fff 23
sss 1
sss 20
sss 22
---------------------------------
Noriu, kad antroje užklausoje suskaičiuotu mazgu pavadinimus, kad gaučiau tokius rezultatus
| mazgo_pav | Is_A_pav |
--------------------------------
fff 4
sss 3
---------------------------------
tai čia elementari programine logika. tu darai
where mazgo_pav=(SELECT mazgo_pav, Is_A_pav
selectini 2 laukelius o nori palyginti su vienu. tai kaip manai turėtų tai pavykti?
Tai matau kad nepavyksta :) Gal ką galite pasiūlyti
tai selectini vieną! nesuprantu kame bėda? pirmoje užklausoje turi išsitraukti tai, ko tau reikia, o su vidine atsirenki pagal ką. o tu vos ne atvriksčiai. ir dar plius už klausa neatitinka lentelės struktūros. iš kur tas tipas_ID?
Pirma užklausa ištraukia duomenis iš tokios lentelės (bent panašios):
-----------------------------------------------------------
ID | Is_A_pav | I_B_pav | tipas_ID | mazgo_pav |
-----------------------------------------------------------
1 | 1 | 2 | 1 | fff |
-----------------------------------------------------------
4 | 1 | 3 | 1 | fff |
-----------------------------------------------------------
2 | 21 | 4 | 1 | fff |
-----------------------------------------------------------
3 | 22 | 2 | 1 | fff |
-----------------------------------------------------------
4 | 23 | 5 | 1 | fff |
-----------------------------------------------------------
5 | 1 | 6 | 1 | sss |
-----------------------------------------------------------
6 | 20 | 7 | 1 | sss |
-----------------------------------------------------------
7 | 22 | 1 | 1 | sss |
-----------------------------------------------------------
8 | 24 | 1 | 2 | sss |
-----------------------------------------------------------
ir gaunama tokia lentelė
| mazgo_pav | Is_A_pav |
--------------------------------
fff 1
fff 21
fff 22
fff 23
sss 1
sss 20
sss 22
---------------------------------
Kuriame nebera neivieno vienodo įrašo(Is_A_pav) tama pačiame mazge
todėl dar vieną užklausą noriu vykdyti, kad suskaičiuotu kiek konkrečiai yra tame mazge skirtingų įrašų
tai selectini vieną! nesuprantu kame bėda? pirmoje užklausoje turi išsitraukti tai, ko tau reikia, o su vidine atsirenki pagal ką. o tu vos ne atvriksčiai. ir dar plius už klausa neatitinka lentelės struktūros. iš kur tas tipas_ID?
nelabai suprantu kaip padryt tai,
O tipas_ID tai kriterijus atrekantis nereikalingus įrašus
jei aš teisingai supratau tavo norimą gauti rezultatą, tuomet viskas turėtų būti kur kas paprasčiau.
SELECT mazgo_pav, COUNT(mazgo_pav) AS number FROM sujungimai
where tipas_ID=1
GROUP by mazgo_pav
šia užklausa panaudojus, man neatsifiltruoja vienodi irašai stulpelyje Is_A_pav
-----------------------------------------------------------
ID | Is_A_pav | I_B_pav | tipas_ID | mazgo_pav |
-----------------------------------------------------------
1 | 1 | 2 | 1 | fff |
-----------------------------------------------------------
4 | 1 | 3 | 1 | fff |
Iš jų turėtų likti tik vienas, nes tame pačiame mazge tas irasas Is_A_pav stulpelio
tai daryk tuomet GROUP BY `Is_A_pav`
Tuomet, bus pasikartojantys įrašai su mazgų pavadinimais :)
o kas tau draudžia pasikartojančių tiesiog neatvaizduoti?
taip ir negerai, nes tuomet netikslus rezultatai gaunasi, gal reiks daryt su php bus lengviau :) gal
O jei pirma aš sukuriu virtualia lentele iš tokių duomenų kokių reikia ir poto iš jos vykdau sql užklausa. ar tai pavyktu?
Pagaliau pavyko, dėkui už patarimus
SELECT mazgo_pav, Count( Is_A_pav )
FROM (
SELECT mazgo_pav, Is_A_pav
FROM sujungimai
WHERE sujungimai.tipas_ID = '1'
GROUP BY mazgo_pav, Is_A_pav
)vir
GROUP BY mazgo_pav
PHP ir MySQL → SQL užklausos ir duomenų struktūros → Užklausa užklausoje?
Powered by PunBB, supported by Informer Technologies, Inc.