ďťż
 
MySQL problem z zapytaniem SELECT ďťż
 
MySQL problem z zapytaniem SELECT
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

MySQL problem z zapytaniem SELECT



Byru - 16-08-2007 00:00
MySQL problem z zapytaniem SELECT
  Cześć,

Mam 3 tabelki: news, comments i users.

Mam też skrypt wyświetlający newsy razem z informacjami kto je napisał i ile
mają komentarzy.
I teraz, mam problem z poniższym zapytaniem:

SELECT news.id, news.id_user, news.active, news.title, news.introduction,
news.date_added, COUNT(comments.id_news) as counter, users.nick as author
FROM news, comments, users WHERE news.active = 1 AND news.id =
comments.id_news AND news.id_user = users.id GROUP BY comments.id_news ORDER
BY news.date_added DESC LIMIT 5

Chodzi o to, że w tym momencie skrypt wyświetla tylko newsy, które posiadają
conajmniej 1 komentarz.
Wszystkie newsy ze zmienną counter = 0 są zupełnie pomijane, a chciałbym,
aby one też się wyświetlały (po prostu z liczbą 0). Jak zmodyfikować
powyższe zapytanie aby osiągnąć taki właśnie efekt? Z góry dzięki za pomoc.

Pozdrawiam
Byru





Damian 'legion' Szuberski - 16-08-2007 00:01

  On 2007-08-15, Byru wrote:
> SELECT news.id, news.id_user, news.active, news.title, news.introduction,
> news.date_added, COUNT(comments.id_news) as counter, users.nick as author
> FROM news, comments, users WHERE news.active = 1 AND news.id =
> comments.id_news AND news.id_user = users.id GROUP BY comments.id_news ORDER
> BY news.date_added DESC LIMIT 5
>
> Chodzi o to, że w tym momencie skrypt wyświetla tylko newsy, które posiadają
> conajmniej 1 komentarz.
> Wszystkie newsy ze zmienną counter = 0 są zupełnie pomijane, a chciałbym,
> aby one też się wyświetlały (po prostu z liczbą 0). Jak zmodyfikować
> powyższe zapytanie aby osiągnąć taki właśnie efekt? Z góry dzięki za pomoc.
Zmodyfikuj coś co przetwarza dane pobrane przez to zapytanie a nie samo
zapytanie.

--
Damian Szuberski




Byru - 16-08-2007 00:01

 
> Zmodyfikuj coś co przetwarza dane pobrane przez to zapytanie a nie samo
> zapytanie.
>

Odpalenie tej kwerendy na czysto (nie przez skrypt) zwraca dokładnie ten sam
rezultat (czyli tylko newsy z komentarzami).

Byru




Misiekd - 16-08-2007 00:01

  Dnia Wed, 15 Aug 2007 11:35:31 +0200, Byru napisał(a):

> Cześć,
>
> Mam 3 tabelki: news, comments i users.
>
> Mam też skrypt wyświetlający newsy razem z informacjami kto je napisał i ile
> mają komentarzy.
> I teraz, mam problem z poniższym zapytaniem:
>
> SELECT news.id, news.id_user, news.active, news.title, news.introduction,
> news.date_added, COUNT(comments.id_news) as counter, users.nick as author
> FROM news, comments, users WHERE news.active = 1 AND news.id =
> comments.id_news AND news.id_user = users.id GROUP BY comments.id_news ORDER
> BY news.date_added DESC LIMIT 5
>
> Chodzi o to, że w tym momencie skrypt wyświetla tylko newsy, które posiadają
> conajmniej 1 komentarz.
> Wszystkie newsy ze zmienną counter = 0 są zupełnie pomijane, a chciałbym,
> aby one też się wyświetlały (po prostu z liczbą 0). Jak zmodyfikować
> powyższe zapytanie aby osiągnąć taki właśnie efekt? Z góry dzięki za pomoc.
>
> Pozdrawiam
> Byru

SELECT news.id, news.id_user, news.active, news.title, news.introduction,
news.date_added, COUNT(comments.id_news) as counter, users.nick as author
FROM news
LEFT JOIN comments ON news.id = comments.id_news
LEFT JOIN users ON news.id_user = users.id
WHERE news.active = 1
GROUP BY comments.id_news
ORDER BY news.date_added DESC
LIMIT 5

--
Pozdrawiam Misiekd





Byru - 20-08-2007 00:00

  > SELECT news.id, news.id_user, news.active, news.title, news.introduction,
> news.date_added, COUNT(comments.id_news) as counter, users.nick as author
> FROM news
> LEFT JOIN comments ON news.id = comments.id_news
> LEFT JOIN users ON news.id_user = users.id
> WHERE news.active = 1
> GROUP BY comments.id_news
> ORDER BY news.date_added DESC
> LIMIT 5

Dzięki, dokładnie o to chodziło ;]

Tym razem mam troszkę inny problem, ale wciąż związany z tematem :)

Mam 2 tabelki:

users (id, id_language, id_language_target)
languages (id, name_english, name_native)

Pozyskuję z nich za pomocą powyższej metody (LEFT JOIN) dane i wszystko jest
świetnie.

Potrzebuję jednak wyciągnąć z tabelki languages dane 2 razy po ID (za pomocą
jednego zapytania) tak aby otrzymać 2 zestawy po 3 zmienne.

1) language_id, language_english, language_native
2) language_target_id, language_target_english, language_target_native

Mam takiego SELECTa:

SELECT users.*, languages.id AS language_id, languages.name_english AS
language_english, languages.name_native AS language_native,
languages.id AS language_id_target, languages.name_english AS
language_target_english, languages.name_native AS language_target_native
FROM users
LEFT JOIN
languages ON users.id_language = languages.id
WHERE users.id = 35

Wynik NIE jest oczywiście prawidłowy, gdyż w zmiennych z "_target" otrzymuję
wyniki z pierwszych zmiennych (tych bez "_target").

Oczywiście jest to spowodowane ciągiem:

languages.id AS language_id_target, languages.name_english AS
language_target_english, languages.name_native AS language_target_native

który różni się od pierwszego tylko nazwami zmiennych. Nie wiem jednak czym
to zastąpić. Z góry dzięki za pomoc.

Pozdrawiam

Byru
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    [mysql] =?ISO-8859-2?Q?Za=E6mienie=2E=2E=2E_jak_wy=B6wietli=E6?==?ISO-8859-2?Q?=2E=2E=2E?= [mysql] =?ISO-8859-2?Q?wielko=B6=E6_bazy_a_stabilno=B6=E6=2C?==?ISO-8859-2?Q?_podzia=B3_du=BFej_bazy_a_powi=B1zania_tabel?= [MySQL] =?ISO-8859-2?Q?Wy=B6wietlenie_kolejnej_pozycji=2C_?==?ISO-8859-2?Q?jak=B1_mia=B3by_dany_rekord=2C_gdybym_czyta=B3 _?==?ISO-8859-2?Q?wg_konkretnych_kryteri=F3w=2E_Da_si=EA_=3F?= [mysql 4.0.x] przenoszenie kolum =?ISO-8859-2?Q?mi=EAdzy_bazam?==?ISO-8859-2?Q?i_cd_=2E=2E=2E_?= [MySQL] =?ISO-8859-2?Q?z=B3=B1czenie_tabeli_u=BFytkownik_i?==?ISO-8859-2?Q?_zdj=EAcia_z_wyborem_zdj=EAcia_domy=B6lnego?= [MySQL] Jak =?ISO-8859-2?Q?wpisa=E6_do_tabeli_pozycje_dl?==?ISO-8859-2?Q?a_wierszy_gdybym_te_wiersze_wybiera=B3_w_ok?== ?ISO-8859-2?Q?re=B6lonej_kolejno=B6ci_=3F?= Gdzie MySQL 4.1, a gdzie 5.0? [MySQL 4.0...4.1] zabezpieczenie przed =?ISO-8859-2?Q?jednoczesn?==?ISO-8859-2?Q?=B1_edycj=B1?= [MS SQL] "set names" (mySQL) w MS SQL MySQL - jak =?ISO-8859-2?Q?wyeksportowa=E6_zawarto=B6=E6_wie?==?ISO-8859-2?Q?lkiej_tabeli?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • lubiatowo.xlx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com