Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Minimalizacja zapytań
KR2615
post
Post #1





Grupa: Zarejestrowani
Postów: 311
Pomógł: 13
Dołączył: 7.05.2007

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


Trochę noobowskie pytanie ale pracuję już kilka dni pod rząd i brakuje mi świeżych pomysłów. Zapragnąłem połączyć 4 zapytaia w dwa ale trochę pogubiłem się ze składnią:

1. Jak jednym zapytaniem wyświetlić ilość użytkowników jak i nazwę najnowszego użytkownika?
  1. SELECT name AS max FROM users ORDER BY joined ASC LIMIT 1, COUNT(*) AS ile FROM users


2. Z tabeli config która zawiera info o id cytatu, który ma się wyświetlć na stronie głównej oraz komentarzu do niego?
  1. SELECT value FROM `config` WHERE name='to_post'
  2. SELECT value FROM `config` WHERE name='comment'


Edit: Z tym drugim poradziłem sobie tak:
  1. SELECT value FROM `config` WHERE name='to_post' OR name='comment'

Zwraca obie wartości w arrayu tylko pytanie, czy kiedyś nie zachce mu się zwracać ich o odwrotnej kolejności i wszystko się posypie?

Ten post edytował KR2615 4.03.2014, 15:34:38
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 1)
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




1. Tego chyba nie zrobisz 1 zapytaniem. Chyba, że połączysz oba UNIONem pamiętając o różnicy w typie danych (musiałbyś count'a rzutować na tekst).
2. Zamiast OR bardziej elegancko jest użyć IN. Co do kolejności: zależy jak to odbierasz w PHP. Powinieneś na wyjściu otrzymać tablicę asocjacyjną, której kluczem jest name, a wartością value. Teraz zapewne masz:
  1. 0 => array(
  2. 'name' => 'to_post',
  3. 'value' => 1
  4. ),
  5. 1 => array(
  6. 'name' => 'comment',
  7. 'value' => 'Komentarz'
  8. )
  9. );

a powinieneś mieć:
  1. 'to_post' => 1,
  2. 'comment' => 'Komentarz'
  3. );

Ewentualnie żeby mieć mieć pewność co do kolejności możesz posortować dane po name.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 10:48