SELECT p.ID, p.post_title as `name`,
pm.meta_value as 'sex',
pma.meta_value as 'age',
pmb.meta_value as 'growth',
pmc.meta_value as 'weight',
pmd.meta_value as 'lang'
FROM edw_posts p
INNER JOIN edw_postmeta AS pm ON pm.post_id = p.ID
INNER JOIN edw_postmeta AS pma ON pma.post_id = p.ID
INNER JOIN edw_postmeta AS pmb ON pmb.post_id = p.ID
INNER JOIN edw_postmeta AS pmc ON pmc.post_id = p.ID
INNER JOIN edw_postmeta AS pmd ON pmd.post_id = p.ID
WHERE
pm.meta_key = 'actors-sex' AND
pma.meta_key = 'actors-age' AND
pmb.meta_key = 'actors-growth' AND
pmc.meta_key = 'actors-weight' AND
pmd.meta_key = 'actors-language'
AND CAST(pmb.meta_value AS SIGNED) < 180
AND p.post_type = 'actors' AND
p.post_status = 'publish'
LIMIT 20
Hej,
mam problem przy pobieraniu pewnych danych z bazy. Dane będące w mojej stronie jako wzrost czy waga osoby są zapisane jako logntext. Ale muszę też porównować te dane czy np. wzrost nie jest większy niż 190cm. I dla danych typu longtext nie działają operatory: <, >, <=, >=. Chciałbym skonwertować w zapytaniu przy WHERE pobierane dane na INTa i później porównać do wskazanej wartości. Powyżej zamieszczam kod SQLa a w linii 22 dzieje się włąśnie to przyrównywanie (to co jest obecnie tam, nie działa).
PS: Wiem, że ogólnie zapytanie jest do bani bo jest wiele razy łączona ta sama tabela, ale nie potrafię zrobić tego optymalniej.
Aaa i drugie pytanie. Czy może widzi ktoś z was tutaj błąd, bo wyniki z bazy pokazują X razy ten sam wynik w sensie tą samą osobę powieloną właśnie X (np. 20) razy.