Autor Zpráva
Baron_Prasil
Profil *
Potřeboval bych propojit mySQL tabulky tak, abych získal výpis DEAL.

Znám hodnotu id z tabulky TAGS a potřebuji vypsat DEAL. Spojovat by se měla tedy:

TAGS = id -> TAGS_SEARCH = id_tags -> DEAL = id

DEAL: id, nazev, seo, kategorie, podkategorie
TAGS: id, nazev, search, pocet_search, seo
TAGS_SEARCH: id_sleva_id_tags
lionel messi
Profil
SELECT t.id, t.nazev, t.search, t.pocet_search, t.seo, t.id_sleva, t.id_tags, d.id, d.nazev, d.seo, d.kategorie, d.podkategorie FROM (SELECT * FROM tags t1 JOIN tags_search ts ON t1.id = ts.id_tags) t JOIN deal d ON ts.id_tags = d.id

Netestované, som len amatér, môže tam byť chyba, prípadne to možno ide napísať aj lepšie, ozvite sa, či funguje.
Baron_Prasil
Profil *
Pokud znám hodnotu id z tabulky TAGS ve stringu: $tags_id = "42"; ... kam se tento string bude hodit dát vložit?
lionel messi
Profil
SELECT t.id, t.nazev, t.search, t.pocet_search, t.seo, t.id_sleva, t.id_tags, d.id, d.nazev, d.seo, d.kategorie, d.podkategorie FROM (SELECT * FROM tags t1 JOIN tags_search ts ON t1.id = ts.id_tags WHERE t1.id = $tags_id) t JOIN deal d ON ts.id_tags = d.id

skúste na vyznačené miesto a dajte vedieť.

Baron_Prasil:
ve stringu: $tags_id = "42"
Až na to, že ideálne by bolo, keby v premennej nebol string, ale číslo (detail).
Baron_Prasil
Profil *
MySQL error: Unknown column 'ts.id_tags' in 'on clause'

Přitom ts = tags_search ve kterém je řádek id_tags. Bude to chyba toho mySQL dotazu :(
lionel messi
Profil
Baron_Prasil:
Bude to chyba toho mySQL dotazu :(
Upravený funkčný dotaz (testované):
SELECT t.id, t.nazev, t.search, t.pocet_search, t.seo, t.id_sleva, t.id_tags, d.id, d.nazev, d.seo, d.kategorie, d.podkategorie
FROM (

SELECT t1.id, t1.nazev, t1.seo, t1.search, t1.pocet_search, tags_search.id_tags, tags_search.id_sleva
FROM tags t1
JOIN tags_search ON t1.id = id_tags
WHERE t1.id = $tags_id
) t
JOIN deal d ON id_tags = d.id

Neviem prečo robil šarapatu alias tabuľky v ON, po odstránení ide.
Tori
Profil
MySQL error: Unknown column 'ts.id_tags' in 'on clause'
Zřejmě se nedá odkazovat na tabulku, která je uvnitř subselectu, ale jen na celý subselect. Asi s t.id_tags by dotaz ve [#4] prošel.
lionel messi
Profil
Tori:
Asi s t.id_tags by dotaz ve [#4] prošel.
Testol som to podľa vás (pretože ma to zaujíma) a správa sa to úplne rovnako s chybou.
Baron_Prasil
Profil *
A jak bude vypadat mySQL dotaz, pokud bych chtěl propojit jen dvě mySQL tabulky?

$id_tags = "15";

TAGS_SEARCH = id_sleva -> DEAL = id


DEAL: id, nazev, seo, kategorie, podkategorie
TAGS_SEARCH: id_sleva, id_tags
lionel messi
Profil
Baron_Prasil:
A jak bude vypadat mySQL dotaz, pokud bych chtěl propojit jen dvě mySQL tabulky?
SELECT  t.id_sleva, t.id_tags, d.id, d.nazev, d.seo, d.kategorie, d.podkategorie FROM tags_search t JOIN deal d ON t.id_sleva = d.id WHERE ts.id_tags = $id_tags
Tori
Profil
lionel messi:
Mně tohle prošlo: SELECT t.id, t.nazev, t.search, t.pocet_search, t.seo, t.id_sleva, t.id_tags, d.id, d.nazev, d.seo, d.kategorie, d.podkategorie FROM (SELECT * FROM tags t1 JOIN tags_search ts ON t1.id = ts.id_tags WHERE t1.id = 5) t JOIN deal d ON t.id_tags = d.id (s prázdnými tabulkami)
lionel messi
Profil
Tori:
Mně tohle prošlo
Aj mne, ďakujem, zase som sa niečo nové dozvedel, domnieval som sa, že chyba je vnútri poddotazu.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: