Estás hablando de condiciones
sobre los datos, por lo que sin conocer los
datos reales de tu base, qué resultado exacto obtienes, y cuál es que que dices que deberías obtener, sólo podemos hacer suposiciones.
Hagamos una cosa: Limpiemos esa query de basura y escribamosla de una forma eficiente, y no tomada de manuales obsoletos. A partir de alli podremos ver una sintaxis mas clara y sin cosas dudosas.
Para MySQL, lo óptmo sería:
Código PHP:
$query = mysql_query("SELECT
J.ID,
Nombre,
Precio,
Peso,
Quilates,
Sexo,
Estado,
Estante,
Marca,
Material,
FechaEntrada,
Descripcion,
FechaSalida
FROM
joyas J
INNER JOIN marcas M ON J.idMarca = M.ID
INNER JOIN estantes ET ON j.idEstante=ET.ID
INNER JOIN estados ES ON J.idEstado=ES.ID
INNER JOIN sexos S ON J.idSexo=S.ID
INNER JOIN materiales MT ON J.idMaterial=MT.ID
WHERE
Nombre LIKE '%$nombre%'
OR J.ID='$id'
ORDER BY J.ID ASC", $connect);
De ese modo podemos ver en el where lo único importante, ya que las otras son condiciones de JOIN, que es mejor escribir como JOINs explícitos.
Dime que devuelve eso.