Jak skonstruowac zapytanie?

0

Zrobilem to na zasadzie rozumowania Pancho :)

Wykonalem zapytanie:
select * from forum where grupa=$grupa order by data AND godz DESC
i pobieram teraz tylko pierwszy rekord ktory zawsze bedzie tym "najmlodszym" , wszystko dziala ale teraz mam pytanko taki zapis jak:
order by data AND godz tzn najpierw posortowanie wg daty a pozniej to co zostanie wg godz ???

a w ogole to musze poaczyc pola daty i godz w jedno bo ja mam jedno pole DATE i normalny text, dziala wszystko ale tak nie moze byc.

0

mam taka tabele np nazwa: "forum" i pola:

  1. Id
  2. Nick
  3. Data
  4. Godzina
  5. Grupa

czy pole Godzina to typ TIME, ja bym raczej połączył pole data z godziną i zrobił pole typu DATETIME lub TIMESTAMP

Teraz chce zrobic takie zapytanie aby zaznaczyc nick osoby w danej grupie np. 1 , 2 itd... o najblizszej dacie i godzinie.
Np.


ID Nick data Godzina grupa
1 Glina 18.08.2003 17:04 1
2 Mario 17.08.2003 16:56 1
3. Sancho 18.08.2003 17:00 1
4. Glina 17.08.2003 16:00 2

Wynikiem ma byc dla grupy 1: Glina bo jest to najswiezsze pole (data i godz najblizsza aktualnej) i dla 2 : Glina bo to juz inna grupa
Da sie to zrobic jednym zapytaniem ?

jeżeli chodzi o osoby które z tego co zrozumiałem mają najajtualniejsza datę, to wybierz dane z tabeli posortuj tak:
ORGER BY grupa, data, godzina

nastepnie zrob pętle która przejdzie cały zestaw rekordów i wpętli przypisujesz do zmiennej pole grupa i ID i przy przejściu do każdego kolejnego sprawdzasz czy grupa równa się tej grupie w zmiennej zmiennej, jeśli nie to ID to w zmiennej jest ostatnim dodanym userem w grupie, nie wiem czy opisałem to dostatecznie jasno więc przykład pętli:
[dopisane]Skaleczyłem powinno to wyglądać tak:
[code]
$grupa = $wiersz[grupa];
while($wiersz = mysql_fetch_array($wynik)){
$dopisane = "nie"
if ($grupa <> $wiersz[grupa]) {
echo "ostatni user w grupie ", $grupa, "to: ", $id;
$grupa = $wiersz[grupa];
$dopisane = "tak"
}
$id = $wiersz[ID];
}
if ($dopisane == "nie") {
echo "ostatni user w grupie ", $grupa, "to: ", $id;
}
[/code]

Oczywiście musisz wziąć pod uwagę, że jeżeli będzie tylko jeden user w grupie ostaniej jak w twoim przykładzie to się go nie dopisze... a;e z tym sobie powinieneś dać radę...

0

Mozesz sprobowac czegos takiego. Nie jestem pewien, czy to bedzie dzialac pod MySQL, albo pod MySQL 3.x ale...

SELECT * FROM tabela WHERE tabela_time = (SELECT MAX(tabela_time) FROM tabela)

0

SELECT * FROM tabela WHERE tabela_time = (SELECT MAX(tabela_time) FROM tabela)

A może:

SELECT * FROM tabela WHERE grupa = ta_grupa ORDER BY tabela_time DESC LIMIT 1

??

0

SELECT * FROM tabela WHERE tabela_time = (SELECT MAX(tabela_time) FROM tabela)

zapytanie w zapytanie hmm nie bardzo to idzie , blad w skladni

Zrobilem to na zasadzie rozumowania Pancho :)

Wykonalem zapytanie:
select * from forum where grupa=$grupa order by data AND godz DESC
i pobieram teraz tylko pierwszy rekord ktory zawsze bedzie tym "najmlodszym" , wszystko dziala ale teraz mam pytanko taki zapis jak:
order by data AND godz tzn najpierw posortowanie wg daty a pozniej to co zostanie wg godz ???

a w ogole to musze poaczyc pola daty i godz w jedno bo ja mam jedno pole DATE i normalny text, dziala wszystko ale tak nie moze byc.

Mysle ze jezeli nie da sie stosowac zapytan w zapytaniu to zapytanie vogela jest tu jak najbardziej trafne
Dzieki Wam

I jeszcze jedno odnosnie funkcji MAX.
Mam np taka tabele:

ID Imie Wiek

Chce id oraz imie rekordu gdzie wiek max.

select id,imie from tabela where wiek=Max(tabela.wiek); // na logike oczywiscie zle :) ale jakt o zapisac??? jak uzyc funkcji max aby byla pomocna w tworzeniu zapytania.

0

musisz zmienić pole z godziną, na odpowiedni typ bo inaczej MySql traktuje jak string i tak też sortuje...
jeżeli wpiszesz order by pol1, pole2
to w tej kolejności będzie sortowane...

0

ale dziwne ze to nie dziala:

SELECT * FROM tabela WHERE tabela_time = (SELECT MAX(tabela_time) FROM tabela);

bo to jest w zupelnosci zgodne z najnowsza specyfikacja SQL, ba bylo zgoddne juz z wersja SQL2, hmm... moze masz jakas starsza wersje bazy danych?

1 użytkowników online, w tym zalogowanych: 0, gości: 1