Vyhledání v celé tabulce mysql

mimacala
Člen | 113
+
0
-

Ahojte,
pro někoho banalita, pro mě zajímavost :)
Prosím jak udělat vyhledání v celé tabulce.
Používá se jiná funkce než where ?
Děkuji

 $hledani = $this->db->table($this->ZjistiTabulku())
                            ->where("",$data->hledat)
                            ->order("datum_vytvoreni DESC");
neznamy_uzivatel
Člen | 115
+
0
-

Na sloupeček ve kterém chceš vyhledávat dej fulltext index a pak:

$hledani = $this->db->table($this->ZjistiTabulku())
    ->where("MATCH(NauzevSloupce) AGAINST(?)", $data->hledat)
    ->order("datum_vytvoreni DESC");

Další info: https://database.guide/…ks-in-mysql/

Pro malinké tabulky může stačit LIKE: ->where("NauzevSloupce LIKE ?", '%cohledam%')

Editoval neznamy_uzivatel (5. 3. 2022 6:55)

mimacala
Člen | 113
+
0
-

Ahoj,
aha takže používá se LIKE, skvěle, ale já bych chtěl hledat napříč celou tabulkou. :)

Představ si, že v tabulce je tel. číslo, email, a jméno.
Na vstupu já nevím co hledám, takže si zadám tel. číslo a potřebuji aby to projelo celou tabulku a našlo shodu.

Mohl bych to co jsi napsal použív na každý sloupeček, ale zdá se mi to jako nepraktické mít tolik dotazů do sql.
Určitě je nějaká možnost jak to udělat v jednom ? :)
Děkuji

Kcko
Člen | 465
+
+4
-

mimacala napsal(a):

Ahoj,
aha takže používá se LIKE, skvěle, ale já bych chtěl hledat napříč celou tabulkou. :)

Představ si, že v tabulce je tel. číslo, email, a jméno.
Na vstupu já nevím co hledám, takže si zadám tel. číslo a potřebuji aby to projelo celou tabulku a našlo shodu.

Mohl bych to co jsi napsal použív na každý sloupeček, ale zdá se mi to jako nepraktické mít tolik dotazů do sql.
Určitě je nějaká možnost jak to udělat v jednom ? :)
Děkuji

Možná by ses měl začít učit SQL jazyk, protože tohle vůbec nesouvisí s Nette.

Jinak Ti na to stačí operator ORa je jedno kolik máš sloupců v tabulce, bude to jen 1 dotaz.

mimacala
Člen | 113
+
0
-

Super děkuji,
našel jsem whereor :)

$vyhledavam = $this->db->table($this->ZjistiTabulku())
                                ->whereOr([
                                        'cislo_reklamace' => $data,
                                        'zbozi' => $data,
                                        'jmeno' => $data,
                                        'prijmeni' => $data,
                                        'telefon' => $data,
                                        'email' => $data,
                                    ])
                         ->order("datum_vytvoreni DESC");