Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: jak zrobic takie zapytanie
Forum PHP.pl > Forum > Bazy danych > MySQL
fido20
Witam,

Chciałbym wybrac z bazy danych w jednym zapytaniu rekordy ktorych pola id = 1, 5, 10 . Jak skonstruowac takiego selecta czy cos takiego bedzie poprawne :

  1. SELECT *
  2. FROM tabela WHERE id = 1 OR id = 5 OR id = 10


Moze jest jakis inny bardziej "elegancki sposob pobrania danych ?

Drugie pytanie juz bardzie z "optymalizacji" . Co bedzie wydajniejsze - szybsze (kod wykonywany w php) . Majac np 100 roznych wartosc tego samego pola chce sprawdzic czy takie dane sa juz w bazie czy tez nie , czy lepiej wrzucic to w petle 100 zapytan do bazy z warunkiem WHERE pole = wartsc[$i] , czy tez moze skonstrowac zapytanie podobne do tego wyzej i skierowac je do bazy ?

Moze nie za jasno tlumacze, ale mam nadziej ze ktos zrozumie jezeli nie prosze pytac , postaram sie lepiej wyjasnic o co mi chodzi
nospor
  1. SELECT *
  2. FROM tabela WHERE id IN (1, 5, 10)


Do drugiego: zależy co chcesz osiągnąć. Ale lepiej smażyć jedno zapytanie niż 100
mhs
Cytat
skonstruowac takiego selecta czy cos takiego bedzie poprawne :

po prostu sprawdz czy bedzie Ci cos takiego dzialac


Cytat
Moze jest jakis inny bardziej "elegancki sposob pobrania danych ?

mozna to zrobic rowniez tak:
  1. SELECT *
  2.  
  3.  
  4. FROM [TABLE] WHERE [FIELD] IN (1,2,3)



lepiej bedzie
Cytat
skonstrowac zapytanie podobne do tego wyzej i skierowac je do bazy
nospor
@mhs napisales ....IN ('1,2,3'). te ciapki rozwalą zapytanie. ma być bez
SongoQ
Moze dodam ze wstawianie OR jest bardzo wolne IN troszeczke jest szybsze, ale dla bardzo duzej ilosci rekordow i tak troszeczke przymula. Ale zastosuj to co podal @nospor
fido20
Dziekuje za zainteresowanie i wszystkie odpowiedzi smile.gif
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.