Jump to content

Recommended Posts

Posted (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 by rexmage

<?PHP echo "Bo0m"; ?>

Posted

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"; ?>

Posted

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"; ?>

Posted

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
Posted

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"; ?>

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.