rexmage Posted May 20, 2012 at 09:43 PM Report #457042 Posted May 20, 2012 at 09:43 PM (edited) Boa noite, Precisava de uma luz sobre SQL. Aqui vai: Portanto o meu objectivo é ter um Post que tem um cat_id e quando eu insiro por exemplo 3, este é a minha categoria. No entanto, este id, representa o valor de outra tabela chamada categorias. id | name | cat_default | permalink_cat 1 | usados | 0 | usados 2 | bmw | 1 | bmw 3 | seat | 1 | seat Como podem ver por este exemplo o usados contém (bmw,seat). A minha dúvida é, como é que eu relaciono o meu post, para saber que esse pertence aos usados, sabendo que o cat_id é 3 ou seja = seat. Eu tentei fazer algo deste género: SELECT posts.id,posts.title, categories.id, categories.permalink_cat FROM posts INNER JOIN categories ON posts.cat_id=categories.id WHERE categories.permalink_cat='usados' Isto não funciona, mas se eu puser seat em vez de bmw, ele encontra. Eu sei que algo estou a fazer mal, mas gostava de perceber melhor o quê? porque não queria duplicar campos pois bastava no próprio post colocar o id da categoria default sempre que o regista-se, mas gostava de evitar isso porque não faz sentido. Alguém pode ajuda? Obrigado Edited May 20, 2012 at 09:46 PM by rexmage <?PHP echo "Bo0m"; ?>
rexmage Posted May 21, 2012 at 12:05 AM Author Report #457063 Posted May 21, 2012 at 12:05 AM Afinal era mais básico do que tava para aqui a pensar. Ok, já descobri o problema. Basicamente fiz o select ao contrário em vez de selecionar primeiro o POST (ou seja o anuncio). Selecionei primeiro a categoria (como tabela principal) sendo o post o inner join. Assim, de uma forma simplificada, consegui obter o que eu queria, e que agora vendo bem, faz todo o sentido. A solução era algo assim: SELECT categories.id, categories.cat_default, categories.permalink_cat, posts.id, posts.title, posts.price, posts.msg, posts.fuel, posts.horsepower, posts.kilometers, posts.cat_id, posts.permalink FROM categories INNER JOIN posts ON categories.id=posts.id WHERE categories.permalink_cat='usados' <?PHP echo "Bo0m"; ?>
HappyHippyHippo Posted May 21, 2012 at 12:13 AM Report #457065 Posted May 21, 2012 at 12:13 AM nop ... a diferença entre os teus SQL's está aqui:e não na ordem do inner join (a ordem neste tipo de projecção não interessa) ... ON posts.cat_id=categories.id ... IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
rexmage Posted May 21, 2012 at 08:57 AM Author Report #457084 Posted May 21, 2012 at 08:57 AM Na verdade hippo ainda não ficou totalmente como quero. A verdade é que assim, estou a igual a categories.id=posts.id Hoje é que voltei a pegar nisto e vi que não é bem isso ao testar novamente. Problema: Imaginem, tenho uma tabela com produtos. essa tabela tem o cat_id. E depois existe outra tabela chamada categorias que tem o cat_default e o permalink. Mas se o cat_default for = 0 então é categoria. Senão é porque o número do cat_default, representa o id de uma categoria já inserida, considerando assim este como subcategoria. Objectivo: Selecionar através do cat_id, o permalink da categoria e não da subcategoria. Como farias isto? <?PHP echo "Bo0m"; ?>
HappyHippyHippo Posted May 21, 2012 at 10:06 AM Report #457102 Posted May 21, 2012 at 10:06 AM com o php ... o sql era só para ir ler a informação da base de dados $sql = "select *, categorias.id as id_categoria from produtos inner join categorias where productos.cat_id = categorias.id"; $record = mysql_fetch_assoc(mysql_query($sql)); $oremalink = ""; if ($record['cat_default'] == 0) $permalink = $record['id_categoria']; else $permalink = $record['cat_default']; (penso que seja isto ... a tua explicação do problema não é a melhor) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
rexmage Posted May 21, 2012 at 10:38 AM Author Report #457106 Posted May 21, 2012 at 10:38 AM Assim que chegar a casa testo isso. 🙂 Peço desculpa pela explicação mas foi a melhor forma que me surgiu de tentar explicar o que pretendo. 😕 Obrigado e até já! <?PHP echo "Bo0m"; ?>
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now