Warning: count(): Parameter must be an array or an object that implements Countable in /home/pasokime/domains/mysql.lt/public_html/forumas/include/parser.php on line 820

1 (edited by FDisk 2007-01-23 05:27:45)

Topic: COUNT() iskarto is keliu lenteliu

Kažkodėl ši užklausa man grazina vienoda rezultata laukeliuose

SELECT
Count(`naujienos`.`id`),
Count(`codebin`.`id`)
FROM
`codebin` ,
`naujienos`

Turiu dvi lenteles, ateityje bus daugiau... Mano tikslas parodyti vartotojui kas naujo svetainėje. Tarkim: Naujienų (6), CodeBin(2), Forumų(16) ir taip toliau. Svarbiausia man teisinga skaičiavimo užklausa.
šis pavyzdys suskaiciuoja kiek isviso.

SELECT
Count(`codebin`.`id`) AS `viso`
FROM
`codebin`

Tačiau kaip suskaičiuoti kiek išviso yra yrašų vienoje lentelėje ir ta pačia užklausa paskaičiuoti kiek ir kitoje lentelėje yra yrašų. Dar gerai būtų jei kas paodytumėte pavyzdį su papildomom salygom tarkim:

SELECT
Count(`codebin`.`id`) AS `viso`
FROM
`codebin`
WHERE
`codebin`.`data` >  '2006'

Išanksto dėkoju.

SELECT * FROM users WHERE gender = 'female' AND size > 'enough' AND leftsize = rightsize AND age >= 18 AND age < 30 LIMIT 1

Re: COUNT() iskarto is keliu lenteliu

Pirmu atveju Tu sujungi dvi lenteles ir suskačiuoji sujungtos lentelės eilučių skaičių, kuris dažniausiai skiriasi nuo abiejų lentelių eilučių skaičių.

Naudok antrą variantą, kuris yra teisingas ir kuriuo reikia rašyti atskiras užklausias atskrom lentelėm. Norint gauti kiekius vian užklausa reikia naudoti SUBQUERY'ius.