ďťż
 
[MySQL 4.1] IN i LIMIT dla każdej wartości ďťż
 
[MySQL 4.1] IN i LIMIT dla każdej wartości
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 4.1] IN i LIMIT dla każdej wartości



Jarosław Ziółkowski - 30-12-2006 01:03
[MySQL 4.1] IN i LIMIT dla każdej wartości
  Witam,

mam tabelę z której pobieram dane, w klauzuli "Where" podaję
in(wartosc,wertosc, wartosc)

Jednak zależy mi na tym żeby dla każdej z tych wartości zostały pobrane
najwyżej 3 rekordy. Jeśli zrobie powiedzmy LIMIT 9 a z wartością
pierwszą będzie 8 rekordów to mi je wszystkie pobierze. Nie za bardzo
wiem jak kto rozwiązać. Ma ktoś jakiś pomysł?





Wojtek Zieliński - 30-12-2006 01:03

  On 29 Gru, 11:28, Jarosław Ziółkowski <ziolkowski_jaros...@o2.pl>
wrote:
> mam tabelę z której pobieram dane, w klauzuli "Where" podaję
> in(wartosc,wertosc, wartosc)
>
> Jednak zależy mi na tym żeby dla każdej z tych wartości zostałypobrane
> najwyżej 3 rekordy. Jeśli zrobie powiedzmy LIMIT 9 a z wartością
> pierwszą będzie 8 rekordów to mi je wszystkie pobierze. Nie za bardzo
> wiem jak kto rozwiązać. Ma ktoś jakiś pomysł?

Skorzystaj z klauzuli UNION taczac trzy zapytania:

SELECT ... FROM ... WHERE cos_tam=wartosc1 LIMIT 0, 3
UNION
SELECT ... FROM ... WHERE cos_tam=wartosc2 LIMIT 0, 3
UNION
SELECT ... FROM ... WHERE cos_tam=wartosc3 LIMIT 0, 3;

Nie jestem pewien czy o to chodzilo.

--
Wojtek Zieliński
http://www.zielinscy.pl




Jarosław Ziółkowski - 30-12-2006 01:03

  Wojtek Zieliński napisał(a):
> On 29 Gru, 11:28, Jarosław Ziółkowski <ziolkowski_jaros...@o2.pl>
> wrote:
>
>>mam tabelę z której pobieram dane, w klauzuli "Where" podaję
>>in(wartosc,wertosc, wartosc)
>>
>>Jednak zależy mi na tym żeby dla każdej z tych wartości zostały pobrane
>>najwyżej 3 rekordy. Jeśli zrobie powiedzmy LIMIT 9 a z wartością
>>pierwszą będzie 8 rekordów to mi je wszystkie pobierze. Nie za bardzo
>>wiem jak kto rozwiązać. Ma ktoś jakiś pomysł?
>
>
> Skorzystaj z klauzuli UNION taczac trzy zapytania:
>
> SELECT ... FROM ... WHERE cos_tam=wartosc1 LIMIT 0, 3
> UNION
> SELECT ... FROM ... WHERE cos_tam=wartosc2 LIMIT 0, 3
> UNION
> SELECT ... FROM ... WHERE cos_tam=wartosc3 LIMIT 0, 3;
>
> Nie jestem pewien czy o to chodzilo.
>
Jeśli chodzi o wynik to zgadza się. Myślałem nad tym jak rowiązać to w
jednym zapytaniu bez ich łączenia.

Dzięki wielkie, widać jednak nie da się takich rzeczy :)




Jarosław Ziółkowski - 30-12-2006 01:03

  Wojtek Zieliński napisał(a):
> On 29 Gru, 11:28, Jarosław Ziółkowski <ziolkowski_jaros...@o2.pl>
> wrote:
>
>>mam tabelę z której pobieram dane, w klauzuli "Where" podaję
>>in(wartosc,wertosc, wartosc)
>>
>>Jednak zależy mi na tym żeby dla każdej z tych wartości zostały pobrane
>>najwyżej 3 rekordy. Jeśli zrobie powiedzmy LIMIT 9 a z wartością
>>pierwszą będzie 8 rekordów to mi je wszystkie pobierze. Nie za bardzo
>>wiem jak kto rozwiązać. Ma ktoś jakiś pomysł?
>
>
> Skorzystaj z klauzuli UNION taczac trzy zapytania:
>
> SELECT ... FROM ... WHERE cos_tam=wartosc1 LIMIT 0, 3
> UNION
> SELECT ... FROM ... WHERE cos_tam=wartosc2 LIMIT 0, 3
> UNION
> SELECT ... FROM ... WHERE cos_tam=wartosc3 LIMIT 0, 3;
>
> Nie jestem pewien czy o to chodzilo.
>
No i pojawił się kolejny problem, chociaż się go nie spodziewałem.
Z tego co mi wiadomo łączone zapytania muszą generować taką samą liczbę
kolumn i przynajmiej ten sam typ danych w nich.
Ja łącze identyczne zapytania tylko w warunku są różne wartości.
Dokładnie zapytanie wygląda tak:

SELECT Artykuly.IdentyfikatorArtykulu, TytulArtykulu,
Artykuly.IdentyfikatorKategorii, KategorieMenu.NazwaKategorii FROM
Artykuly INNER JOIN KategorieMenu ON
Artykuly.IdentyfikatorKategorii=KategorieMenu.Iden tyfikatorKategorii
WHERE Artykuly.IdentyfikatorKategorii=wartosc LIMIT 0, 1
UNION
i dokładnie to samo z inną wartością.

Nie generują się takie same zbiory wynikowe ale próbowałem też z UNION ALL
I za każdym razem wywala mi wynik tylko z pierwszego zapytania.
Jeśli tylko w warunku jest poprawna wartość generuje się wynik. Niestety
kolejne zapytanie jest w nim pomijane, mimo że powinno zwrócić dane
takich samych typów z takimi samymi nazwami pól.





Jarosław Ziółkowski - 30-12-2006 01:03

  Jarosław Ziółkowski napisał(a):
> Witam,
>
> mam tabelę z której pobieram dane, w klauzuli "Where" podaję
> in(wartosc,wertosc, wartosc)
>
> Jednak zależy mi na tym żeby dla każdej z tych wartości zostały pobrane
> najwyżej 3 rekordy. Jeśli zrobie powiedzmy LIMIT 9 a z wartością
> pierwszą będzie 8 rekordów to mi je wszystkie pobierze. Nie za bardzo
> wiem jak kto rozwiązać. Ma ktoś jakiś pomysł?

Problem został rozwiązany, może ktoś potrzebujący będzie przeszukiwać
grupę więc napiszę. Jeśli dla każdego zapytania ma być limit osobno
ustalany to zapytania muszą być umieszczone w nawiasach.

Pozdrawiam.
  • 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 5.x] jak =?ISO-8859-2?Q?zrealizowa=E6_zapytanie=3F_cz?==?ISO-8859-2?Q?yli_podzapytanie_i_wi=EAcej_ni=BF_jeden_rz=B1? ==?ISO-8859-2?Q?d_wynik=F3w?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ponland.htw.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