Autor | Zpráva | ||
---|---|---|---|
Jzikes Profil |
#1 · Zasláno: 25. 1. 2013, 15:42:42
Zdravím,
v MySQL mám dvě tabulky ("rejstrik_A" a "rejstrik_B"). V tabulce rejstrik_A mám sloupce: Autor, Nazev, Rok, Rocnik, Cislo, Strana, Misto a ID. V tabulce rejstrik_B mám sloupce: Lokalita, Region a ID. Potřeboval bych aby když budu vyhledávat v tabulce "rejstrik_B" ve sloupci Lokalita, aby to našlo i řádky v tabulce "rejstrik_A" se společným polem ID. Už se na to snažím přijít druhý den a prolistoval sem několik knížek a stránek na internetu, ale pořád si nevím rady. Prosím jestli byste mi nemohli poradit Děkuji J. Zikeš |
||
Kajman Profil |
#2 · Zasláno: 25. 1. 2013, 15:50:07
SELECT * FROM rejstrik_b b LEFT JOIN rejstrik_a a ON b.id = a.id WHERE b.lokalita = 'Praha' |
||
Jzikes Profil |
#3 · Zasláno: 25. 1. 2013, 19:40:13
Děkuji už to funguje!!!
Tady je zdroják: $ziskat = MySQL_Query ("SELECT * FROM Rejstrik_B LEFT JOIN Rejstrik_A ON Rejstrik_B.ID = Rejstrik_A.ID WHERE Lokalita LIKE '%".$search."%'",$spojeni); while ($vypsat = mysql_fetch_array($ziskat)) { echo("<strong>".$vypsat['Autor']." (".$vypsat['Rok'].")".": "."</strong>".$vypsat['Nazev'].". −Minerál, "."<strong>".$vypsat['Rocnik']."</strong>".", ".$vypsat['Cislo'].", "."<em>".$vypsat['Strana']."</em>".". ".$vypsat['Misto']."."."<br />"); }; J. Zikeš |
||
Časová prodleva: 4 dny
|
|||
Jzikes Profil |
#4 · Zasláno: 29. 1. 2013, 17:06:53
Zdravím,
potřebuji to trochu upravit... Zadat více podmínek! Normálně to není problém: $ziskat = MySQL_Query("SELECT * FROM Rejstrik_A WHERE Autor LIKE '%".$autor."%' AND Nazev LIKE '%".$nazev."%' AND Rok LIKE '%".$rok."%'",$spojeni); Ale pokud potřebuji jednu podmínku jako spojení s druhou tabulkou nevím jestli to mám rozdělit do dvou proměných $ziskat = MySQL_Query("SELECT.............. $ziskat_2 = MySQL_Query("SELECT * FROM ... LEFT JOIN.. Děkuji za odpověď J. Zikeš |
||
Kajman Profil |
#5 · Zasláno: 29. 1. 2013, 18:17:02
Podmínky můžete spojovat operátory and, or i jinými. Pokud chcete mít řádky z více zdojů, existuje příkaz union. Ale těžko říct, s čím jste narazil. Zkuste jasně sdělit, o co vám jde a s čím máte problémy.
|
||
Jzikes Profil |
#6 · Zasláno: 29. 1. 2013, 18:31:50
Mám databázi s dvěma tabulkami (A a B), ve kterých chci vyhledávat. Vyhledávající formulář má 4 okénka (Autor, název, rok a lokalita). S prvními třemi nemám problém:
$ziskat = MySQL_Query("SELECT * FROM Rejstrik_A WHERE Autor LIKE '%".$autor."%' AND Nazev LIKE '%".$nazev."%' AND Rok LIKE '%".$rok."%'",$spojeni);´ $ziskat = MySQL_Query ("SELECT * FROM Rejstrik_B LEFT JOIN Rejstrik_A ON Rejstrik_B.ID = Rejstrik_A.ID WHERE Lokalita LIKE '%".$search."%'",$spojeni); Když tak ten formulář je na: http://zikmundovo-blog.wz.cz/rejstrik J. Zikeš |
||
Kajman Profil |
#7 · Zasláno: 30. 1. 2013, 09:02:43
Je to prosté, uděláte ono spojení tabulek a použijete and operátor. Pro možnou kolizi názvů sloupců je vhodné jejich jednoznačné určení.
SELECT * FROM Rejstrik_A AS A JOIN Rejstrik_B AS B ON A.ID = B.ID WHERE A.Autor LIKE '%$autor%' AND A.Nazev LIKE '%$nazev%' AND A.Rok = '$rok' AND B.Lokalita LIKE '%$search%' Jen ty podmínky by bylo dobré přidávat jen když ve formuláři byla hodnota vyplněna. A také je vhodné hodnoty escapovat díky mysql_real_escape_string. |
||
Jzikes Profil |
#8 · Zasláno: 30. 1. 2013, 14:56:37 · Upravil/a: Jzikes
Zdravím,
udělal jsem to takhle, ale funguje jen vyhledávání ve druhé tabulce (Rejstrik_B) inputy autor a rok nefungují!!: $ziskat = MySQL_Query("SELECT * FROM Rejstrik_A AS A JOIN Rejstrik_B AS B ON A.ID = B.ID WHERE A.Autor LIKE '%".$autor."%' AND A.Nazev LIKE '%".$nazev."%' AND A.Rok LIKE '%".$rok."%' AND B.Lokalita LIKE '%".$lokalita."%'",$spojeni); Jinak ale díky... J. Zikeš Omluvám se, funguje to dobře, ale jen s lokalitou. Jak mám docílit toho, aby když lokalitu nevyplním vyhledávalo to třeba podle autora všude. |
||
Kajman Profil |
#9 · Zasláno: 30. 1. 2013, 15:46:25
Když nevyplní lokalitu, nedávejte podmínku na lokalitu do where a nedělejte join na druhou tabulku.
|
||
Jzikes Profil |
#10 · Zasláno: 30. 1. 2013, 15:58:36
Děkuji
|
||
Časová prodleva: 12 let
|
0