Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] Minimalizacja zapytań
Forum PHP.pl > Forum > Bazy danych > MySQL
KR2615
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?
phpion
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.