Skocz do zawartości

[mysql tablica z konkretnym indeksem]


HERO

Rekomendowane odpowiedzi

Hejka naprowadzcie mnie prosze. mam klase w php i wyciagam dane z bazy do tablicy

 

$db->query('SELECT * FROM samochody  WHERE status = 1')->fetchAll();

 

tabela: id, marka samochodu, model samochodu, status, data dodania

 

w jaki sposob napisac zapytanie zeby stworzyl mi odrazu tablice po indeksie data? nawet nie tylko prosze o gotowe zapytanie co wskazowki pod czym szukac to moze sie naucze

dzieki

 

Opiekuj.pl - Testy dla opiekunek do dzieci | Dentysta Mokotów który daje powody do uśmiechu | Systemy szklane - Oferujemy szeroki wybór elementów szklanych dostępnych w różnych rozmiarach

 

Odnośnik do komentarza
Udostępnij na innych stronach

Litości ... ewidentnie programowanie nie jest dla Ciebie !

Cytat

Nie rozumień tego pytania "w jaki sposob napisac zapytanie zeby stworzyl mi odrazu tablice po indeksie data? "

  ?
 

  • Like 1

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Chodzi Ci o sortowanie wyników zapytania, czy o to by tablica wynikowa jako klucze miała daty ?
Jeśli to drugie, ale jest to błędne podejscie bo będą pominięte te same daty to tak: 

	foreach($myarray AS $data)
	{
		$myarray[$data['date']] = $data;	
	}


 

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Chyba że data ma unikalny indeks, to wtedy Twoje rozwiązanie @Mion styknie. A jeśli nie, to trzeba utworzyć po prostu tak:

foreach($myarray AS $data)
	{
		$myarray[$data['date']][] = $data;	
	}

I wtedy odwołujesz się do pierwszego elementu tablicy i w razie potrzeby każdego ntego:

$myarray['konkretnadata'][0];

 

Odnośnik do komentarza
Udostępnij na innych stronach

Hejka, nie chodziło mi o sortowanie wg kolumny czyli ORDER BY

 

chodziło mi o to co napisał @okazwłoka (

$myarray[$data['date']][] = $data;	 

) tylko, z ta roznica, ze chcialbym uzyskac tablice samym zapytaniem z sqla zeby oszczedzic tworzenia kolejnych pętli zeby stworzyc nowe tablice o danym kluczu ale moze sie nie da, @Mion dzieki za dobre slowo :)

 

teraz patrze, ze w laravel mozna to chyba machnac tak: 

 

$roles = collect(DB::table('samochody')->get())->keyBy('date');

 

ale poza laravelem to nie wiem jak inaczej poza foreach 

Edytowane przez HERO

Opiekuj.pl - Testy dla opiekunek do dzieci | Dentysta Mokotów który daje powody do uśmiechu | Systemy szklane - Oferujemy szeroki wybór elementów szklanych dostępnych w różnych rozmiarach

 

Odnośnik do komentarza
Udostępnij na innych stronach

13 godzin temu, HERO napisał:

pętli zeby stworzyc nowe tablice o danym kluczu ale możne się nie da

Jak sama nawa mówi klucz tablicy będzie unikalny... Operacje na tablicach to podstawa w programowaniu.

 

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

No to zostaje jeszcze jeden sposób.  W sumie nie korzystam z niego, zawsze układam potrzebną tablicę w pętli, szczególnie że rzadko trzeba przetrawić więcej niż 1000 rekordów na raz. 

 

Tu musisz zrobić tak zapytanie, żeby na początku był Twój klucz czyli 'date' czyli select data as mojadata ... from ... where ...

$wynik = array_map('reset', $stmt->fetchAll(PDO::FETCH_GROUP|PDO::FETCH_ASSOC));
Edytowane przez okazwłoka
  • Thanks 1
Odnośnik do komentarza
Udostępnij na innych stronach

Tak czy siak foreach i array_map dają zbliżone czasy wykonywania skryptu :) array_map po prostu lepiej wygląda.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 2 tygodnie później...

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności