Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][SQL] Zapytanie do bazy
gsk
post 21.01.2009, 15:07:22
Post #1





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


Witam, mam dosyć nietypowy problem z zapytaniem SQL. Otóż chciałem się spytać kolegów czy jest taka możliwość, aby wyświetlić pewną ilość wierszy tylko trochę inaczej.
Wiem, ze można użyć do tego np. LIMIT i taki prosty przykład:
  1. SELECT tabela.*, kupon.id FROM tabela, kupon LIMIT 10 ;

Tylko ja chce wyświetlić to tak, aby pokazywało mi 10 ostatnich kuponów (czyli tak jakby LIMIT po kupon.id tylko takiego czegoś nie ma) z tego przykładowego zapytania, a nie 10 ostatnich wierszy z tego select'a. Jak to najprościej załatwić? Wiem, że mógł bym to zrobić na poziomie php-a, ale mam pytanie czy jest możliwość zrobienia tego za pomocą SQL-a;
Nie wiem czy ktoś mnie zrozumiał smile.gif Wiecie trudno mi o tym mówić tongue.gif
Pozdrawiam i dzięki za rady.


--------------------
pomoglem wcisnij przycisk "pomogl" - dzieki...
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Wykrywacz
post 21.01.2009, 15:34:07
Post #2





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


  1. SELECT tabela.*, kupon.id FROM tabela, kupon LIMIT 10
;

Po 1. nie masz powiązania pomiędzy tablami, jak chcesz aby współpracowały.

ja proponuje tak
  1. SELECT * FROM tabela WHERE id IN (SELECT id FROM kupon) LIMIT 10


ale musiałbyś pokazać mi strukturę obu tabel aby ci bardziej pomóc, choć powinieneś zastanowić się i spróbować dalej działać samemu.

Kluczem jest aby dać w klauzuli where taki warunek aby wybierało tylko spośród kuponów winksmiley.jpg


Albo jeżeli chcesz zrobić to nie obciążając bazy użyj left joina dla "tabela"

  1. tabela LEFT JOIN kupon ON tabela.jakiś_id = kupon.id


Ten post edytował Wykrywacz 21.01.2009, 15:36:54
Go to the top of the page
+Quote Post
Zyx
post 21.01.2009, 15:35:10
Post #3





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Jak chcesz pobrać 10 ostatnich kuponów, to robisz:

Kod
SELECT * FROM kupon ORDER BY id DESC LIMIT 10


A jak potrzebna Ci jest inna tabela, to nie zapomnij o dodaniu jakiegoś warunku na złączenie, gdyż inaczej uzyskasz iloczyn kartezjański zawartości obu tabel.

Ten post edytował Zyx 21.01.2009, 15:35:53


--------------------
Specjalista ds. głupich i beznadziejnych, Zyx
Nowości wydawnicze: Open Power Collector 3.0.1.0 | Open Power Autoloader 3.0.3.0
Go to the top of the page
+Quote Post
Wykrywacz
post 21.01.2009, 15:48:47
Post #4





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Masz tu pełne, powinno działać tylko dla kuponów. Podstaw se tylko ".jakiś_id" tongue.gif

  1. SELECT tabela.*, kupon.id FROM tabela LEFT JOIN kupon ON tabela.jakiś_id = kupon.id ORDER BY 10
Go to the top of the page
+Quote Post
gsk
post 21.01.2009, 15:48:53
Post #5





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


to jest tylko taki malutki przykład, oczywiście ze są razem powiązane i mam nie tylko 2 tabele ale 5 smile.gif

wyglada to mniej wiecej tak: http://img177.imageshack.us/img177/4800/kuponfb4.jpg

  1. SELECT adds.coupon_id, adds.bet_id, coupons.id AS coupons_id, coupons.date, bets.id, bets.typ AS bets_typ, bets.event_id, events.id, events.name AS events_name, events.meet_id, meets.id, meets.name AS meets_name FROM adds, bets, coupons, events, meets WHERE coupons.id = adds.coupon_id AND adds.bet_id = bets.id AND events.id = bets.event_id AND meets.id = events.meet_id;


i tutaj zapytanie jakie mam teraz. ale to zapytanie mnie satysfakcjonuje bo niby moge wyswietlic wedlug kuponow, ale jak dam LIMIT na 10 a kupon bedzie mial 11 typow to mi przytnie kupon.

Ten post edytował gsk 21.01.2009, 16:11:25


--------------------
pomoglem wcisnij przycisk "pomogl" - dzieki...
Go to the top of the page
+Quote Post
Wykrywacz
post 21.01.2009, 15:50:02
Post #6





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


no to albo where'ujesz, albo left joinujesz, tak aby wyświetlało ci tylko to co ma odzwierciedlenie w tabeli kupony.
Go to the top of the page
+Quote Post
gsk
post 21.01.2009, 16:04:27
Post #7





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


a mogę dawać coś takiego jak join w joinie? jak mam wiecej tabel. bo z tym joinem już próbowałem wcześniej.


--------------------
pomoglem wcisnij przycisk "pomogl" - dzieki...
Go to the top of the page
+Quote Post
Wykrywacz
post 21.01.2009, 16:12:35
Post #8





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Pokarz pełnego selecta jakiego do tej pory zrobiłeś. Bo mam wrażenie że odrabiam ci zadanie domowe, zamiast pomóc znaleźć błąd.
Go to the top of the page
+Quote Post
gsk
post 21.01.2009, 16:15:58
Post #9





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


masz parę postów wyżej. za praca domowa jak byś zgadł smile.gif pisze inzynierke


--------------------
pomoglem wcisnij przycisk "pomogl" - dzieki...
Go to the top of the page
+Quote Post
Wykrywacz
post 21.01.2009, 16:25:05
Post #10





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


To zrób sobie najpierw selecta i zlicz ilość kuponów i potem tą wartość przekaż do limit $ilosc_kuponow
Go to the top of the page
+Quote Post
gsk
post 21.01.2009, 16:29:10
Post #11





Grupa: Zarejestrowani
Postów: 129
Pomógł: 4
Dołączył: 21.02.2004
Skąd: z domu

Ostrzeżenie: (0%)
-----


ale to mi nic nie da smile.gif przynajmiej nie w moim zapytaniu smile.gif


--------------------
pomoglem wcisnij przycisk "pomogl" - dzieki...
Go to the top of the page
+Quote Post
erix
post 21.01.2009, 16:34:07
Post #12





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
Tylko ja chce wyświetlić to tak, aby pokazywało mi 10 ostatnich kuponów (czyli tak jakby LIMIT po kupon.id tylko takiego czegoś nie ma) z tego przykładowego zapytania, a nie 10 ostatnich wierszy z tego select'a. Jak to najprościej załatwić? Wiem, że mógł bym to zrobić na poziomie php-a, ale mam pytanie czy jest możliwość zrobienia tego za pomocą SQL-a;

Skoro piszesz pracę inżynierską, to przejrzenie dokumentacji nie jest chyba problemem?

Dostałeś już wiele sugestii, a tu (czyichś) prac domowych nie odrabiamy; zwłaszcza inżynierskich. Manual, manual i jeszcze raz manual.


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post

Closed TopicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.07.2025 - 01:45