praegune kellaaeg 20.06.2025 11:55:11
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
redenergy
HV veteran

liitunud: 22.03.2004
|
02.01.2010 02:49:39
LEFT JOIN ja COUNT |
|
|
Tervist.
Olen jamanud ühe asjaga väga kaua juba ja mõistus otsas vist.
Nimelt mul on fotoalbum. Seal tahaks kuvada Kasutajad ja selle kõrvale mitu albumit neil on.
sql:
|
$query = mysql_query("SELECT DISTINCT(kasutajad.kasutaja), kasutajad.id, COUNT(albumid.omanik) AS albumeid FROM kasutajad LEFT JOIN albumid ON kasutajad.id=albumid.omanik ORDER BY kasutajad.kasutaja") OR die(mysql_error()); while($row = mysql_fetch_array($query)){ $kasutajanimi = $row['kasutaja']; $albumeid = $row['albumeid'];
|
Selle koodiga kui kasutada COUNT'i kuvab ta ainult ühe kasutaja. Aga miks?
Kui COUNT ära jätta kuvab kõik kasutajad aga selle asemel mitu albumit kellelgil on näitab hoopis tabelist album kasutaja ID'd.
Kas keegi teaks lahendust miks count ei tööta?
tänud
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
02.01.2010 03:13:31
|
|
|
COUNT töötab täpselt nagu pead, sa lihtsalt kasutad seda valesti.
Sa peaksid grupeerima tulemused millegi (antud juhul arvatavasti kasutajad.kasutaja) järgi GROUP BY abil. Ning DISTINCT viska minema.
_________________ ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
30.01.2010 17:28:31
|
|
|
wow ja nii lihtne oligi. Tänan
------
Ei hakka uut teemat tegema.
Mul on kaks tabelit Summad ja Kategooriad.
Tulemus peaks olema selline, et kuvatakse kõik kategooriad ja iga kategooria kõrvale tuleks summa sinna kategooriasse lisatud numbritest.
Probleem aga on järgmine. Nimelt, kui Summad tabelis ei ole ühtegi vastava kategooriaga sisestust siis seda kategooriat ei kuvata.
Kood on mul hetkel selline
sql:
|
$result = mysql_query("SELECT Kategooriad.KategooriaNumber, Kategooriad.KategooriaNimi, Kategooriad.Tyyp, UNIX_TIMESTAMP(Kategooriad.timestamp) AS timestamp, Summad.KategooriaNumber, Summad.KasutajaID, SUM(Summad.Summa) AS Summa FROM Kategooriad LEFT JOIN Summad ON Kategooriad.KategooriaNumber=Summad.KategooriaNumber WHERE Kategooriad.KasutajaID='".$_SESSION['sees']['KasutajaID']."' AND Summad.KasutajaID='".$_SESSION['sees']['KasutajaID']."' GROUP BY Kategooriad.KategooriaNimi ORDER BY Summa")
|
ehk keegi oskab aidata?
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
troglodyte
Kreisi kasutaja

liitunud: 09.08.2002
|
30.01.2010 18:47:11
|
|
|
Asi on selles, et Summad.KasutajaID kontroll WHERE klauslis eemaldab need read enne GROUP BY-d (see ei ole tehniliselt küll päris täpne selgitus, kuid enamvähem).
Kuna Summad.KasutajaID on sama mis Kategooriad.KasutajaID siis pane need LEFT JOIN-i kirja:
sql:
|
SELECT Kategooriad.KategooriaNumber, Kategooriad.KategooriaNimi, Kategooriad.Tyyp, UNIX_TIMESTAMP(Kategooriad.timestamp) AS timestamp, Summad.KategooriaNumber, Summad.KasutajaID, SUM(Summad.Summa) AS Summa FROM Kategooriad LEFT JOIN Summad ON Kategooriad.KategooriaNumber = Summad.KategooriaNumber AND Summad.KasutajaID = Kategooriad.KasutajaID WHERE Kategooriad.KasutajaID = $_SESSION['sees']['KasutajaID'] GROUP BY Kategooriad.KategooriaNimi ORDER BY Summa;
|
NB: Sa saad MySQL-s tabelite nimedele aliasi panna, et sa päringus alati neid pikalt välja ei peaks kirjutama, näiteks:
sql:
|
SELECT k.KategooriaNumber, k.KategooriaNimi, k.Tyyp, UNIX_TIMESTAMP(k.timestamp) AS timestamp, s.KategooriaNumber, s.KasutajaID, SUM(s.Summa) AS Summa FROM Kategooriad k LEFT JOIN Summad s ON k.KategooriaNumber = s.KategooriaNumber AND s.KasutajaID = k.KasutajaID WHERE k.KasutajaID = $_SESSION['sees']['KasutajaID'] GROUP BY k.KategooriaNimi ORDER BY Summa;
|
_________________ ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn |
|
Kommentaarid: 34 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
34 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
30.01.2010 23:03:32
|
|
|
Suured-suured tänud. Sain jälle targemaks.
Aga nüüd tekkis teine küsimus.
Iga kategooria esindab mul ka linki näiteks: index.php?leht=kategooria&kategoorianr=3
See number on siis sõltuvalt iga kategooria numbrist.
Probleem on aga selles, et ilma summata kategoorial ei tule numbrit sinna.
Kas selle vastu on ka lihtsamat rohtu või pean hakkama miskit pornot välja mõtlema ?
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|