Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - N4X

#41
Cita de: ^TiFa^ en 14 Enero 2010, 19:41 PM
Si ya de antemano se actualizan las tablas padre-hijo es porque esta funcionando.

que gran verdad!! que espeso estoy hoy  :P

ok todo correcto hasta día de hoy, cualquier cosa edito  :silbar:
#42
ja... si que es para darse un par de palmaditas.........  :-X

muchas gracias xD no sabia yo que hacia esa distincción de orden...

enfin... pues bueno... ya como no podia ser distinto... dejo otro "problema" (al final me vas a cobrar xD)

ejecuto el sql.. todo correcto

me voy al phpmyadmin y en la parte de diseñador, no se ve las relaciones hacia web_oracion_lugares... bueno como normalmente la parte Diseñador siempre me ha funcionado como ha querido... me voy a las tablas y busco las FK... estan alli (en ambas tablas)

entonces... creo unos cuantos datos... me relaciona todo bien, es decir cuando voy a guardar datos en web_oracion, en id_cat2 (que va relacionado con las categorias) me muestra una lista de todas ellas... sin problemas

pero en la parte de id_pais2, etc... no me muestra ninguna lista y al guardar los datos no me muestra un "link" como suele hacer....

hay alguna forma de comprobar que realmente están funcionando correctamente?

saludos!
nax
#43
ok ahora te lo doy...

me e dado cuenta que el error no es solo uno..

por haí decian que habia que cambiar los nombres de las FK porque ya existian.. (nothing)

que las FK sean exactamente igual a la original (creo que ya lo son... pero nada)

este es el sql que genera al sincronizar con la bd.
el mydb no e encontrado aun donde borrarlo y que no vuelva  :laugh:

Código (sql) [Seleccionar]
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';

CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;

USE `mydb`;

CREATE  TABLE IF NOT EXISTS `smf_test`.`web_oracion_cat` (
  `id_cat` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT ,
  `categoria` VARCHAR(100) NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`id_cat`) )
ENGINE = InnoDB
AUTO_INCREMENT = 3
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;

CREATE  TABLE IF NOT EXISTS `smf_test`.`web_oracion_lugares` (
  `id_pais` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_ca` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_provincia` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_comarca` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_ciudad` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `nombre` VARCHAR(100) NOT NULL DEFAULT 0 ,
  `responsable` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`id_pais`, `id_ca`, `id_provincia`, `id_comarca`, `id_ciudad`) )
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;

CREATE  TABLE IF NOT EXISTS `smf_test`.`web_oracion_top10` (
  `id_top` INT(10) UNSIGNED NOT NULL ,
  `id_pais1` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_ca1` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_provincia1` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_comarca1` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_ciudad1` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_peticion1` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `posicion` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`id_top`) ,
  INDEX `relacion1` (`id_pais1` ASC, `id_ca1` ASC, `id_provincia1` ASC, `id_comarca1` ASC, `id_ciudad1` ASC) ,
  INDEX `peticion` (`id_peticion1` ASC) ,
  CONSTRAINT `relacion1`
    FOREIGN KEY (`id_pais1` , `id_ca1` , `id_provincia1` , `id_comarca1` , `id_ciudad1` )
    REFERENCES `smf_test`.`web_oracion_lugares` (`id_pais` , `id_ca` , `id_provincia` , `id_comarca` , `id_ciudad` )
    ON DELETE NO ACTION
    ON UPDATE CASCADE,
  CONSTRAINT `peticion`
    FOREIGN KEY (`id_peticion1` )
    REFERENCES `smf_test`.`web_oracion` (`id_peticion` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;

CREATE  TABLE IF NOT EXISTS `smf_test`.`web_oracion` (
  `id_peticion` INT(10) UNSIGNED NOT NULL ,
  `peticion` VARCHAR(250) NOT NULL DEFAULT 0 ,
  `usr_rel` MEDIUMINT(2) UNSIGNED NOT NULL DEFAULT 1 ,
  `votos` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `hora` TIMESTAMP NOT NULL ,
  `autor` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_pais2` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_ca2` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_provincia2` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_comarca2` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_ciudad2` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  `id_cat2` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,
  PRIMARY KEY (`id_peticion`) ,
  INDEX `relacion2` (`id_comarca2` ASC, `id_ciudad2` ASC, `id_provincia2` ASC, `id_ca2` ASC, `id_pais2` ASC) ,
  INDEX `categoria` (`id_cat2` ASC) ,
  CONSTRAINT `relacion2`
    FOREIGN KEY (`id_comarca2` , `id_ciudad2` , `id_provincia2` , `id_ca2` , `id_pais2` )
    REFERENCES `smf_test`.`web_oracion_lugares` (`id_comarca` , `id_ciudad` , `id_provincia` , `id_ca` , `id_pais` )
    ON DELETE NO ACTION
    ON UPDATE CASCADE,
  CONSTRAINT `categoria`
    FOREIGN KEY (`id_cat2` )
    REFERENCES `smf_test`.`web_oracion_cat` (`id_cat` )
    ON DELETE CASCADE
    ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8
COLLATE = utf8_general_ci;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;


al principio pensaba que era la tabla top10, pues esa se generaba bien y la principal (web_oracion), pero e borrado toda la bd y en sincronizado sin el top10 y da el mismo error.

muchas gracias por el soporte :)
a estas alturas andaria desesperado XD
#44
a lo que te refieres es a tener una sola tabla tipo:

tabla_oracion_sitios

id_pais id_ca id_provincia id_comarca id_ciudad nombre

y si quiero poner españa:

id_pais id_ca id_provincia id_comarca id_ciudad nombre
   1        0         0                  0                   0        españa

agrego una comunidad autonoma
id_pais id_ca id_provincia id_comarca id_ciudad nombre
   1        1        0                   0              0           cataluña

así? hmmm si es el caso... podria ser una buena idea... y trabajar del mismo modo los top... hmmmmm pensaré en ello..

un ejemplo de top10 podria ser:

tabla_oracion_top10

id_pais id_ca id_provincia id_comarca id_ciudad id_peticion posicion
  1         1           0                 0             0              5             1
con lo cual marcariamos la petición (o circular) 5 en la primera posición de cataluña (siguiendo los 2 ejemplos anteriores)

hmm me gusta bastante... lo pensaré bien a lo largo del día, pero quiza sea la mejor solución



la comarca no es otra cosa que dividir en porciones mas pequeñas un territorio (http://es.wikipedia.org/wiki/Comarca)

si ponemos un ejemplo seria:

pais: españa
comunidad autonoma: cataluña
provincia: tarragona
comarca: baix camp
ciudad: reus
(http://es.wikipedia.org/wiki/Reus)

lo que yo digo es que hay un representante para cada ciudad, uno para cada comarca, uno para cada provincia, etc...

el de ciudad envia su top10 al de su comarca el cual recive todos los top10 de las ciudades que componen la comarca y así sucesivamente hasta llegar al pais.



AGREGO:

impresionante como cambia la cosa... (me e pasado a las herramientas de mysql por mayor comodidad xD)

ahora si está mas bonita esta parte, a mi parecer ni punto de comparación  ;-)

link: http://img11.imageshack.us/img11/1998/dibujoiyo.jpg

muchas gracias por todo...

iré haciendo las demás y si tengo problemas agrego :)


un problemita es a la hora de importar el código SQL del Workbench a MySQL

le doy a sincronizar y me dice que hay un error, pero no donde ni cual es...

Código (sql) [Seleccionar]

Executing SQL script in server

ERROR: Error 1005: Can't create table 'smf_test.web_oracion' (errno: 150)





CREATE  TABLE IF NOT EXISTS `smf_test`.`web_oracion` (

  `id_peticion` INT(10) UNSIGNED NOT NULL ,

  `peticion` VARCHAR(250) NOT NULL ,

  `usr_rel` MEDIUMINT(2) UNSIGNED NOT NULL DEFAULT 1 ,

  `votos` INT(10) UNSIGNED NOT NULL DEFAULT 0 ,

  `hora` TIMESTAMP NOT NULL ,

  `autor` MEDIUMINT(8) UNSIGNED NOT NULL ,

  `id_pais` INT(10) UNSIGNED NOT NULL ,

  `id_ca` INT(10) UNSIGNED NOT NULL ,

  `id_provincia` INT(10) UNSIGNED NOT NULL ,

  `id_comarca` INT(10) UNSIGNED NOT NULL ,

  `id_ciudad` INT(10) UNSIGNED NOT NULL ,

  `id_cat` INT(10) UNSIGNED NOT NULL ,

  PRIMARY KEY (`id_peticion`) ,

  INDEX `relacion2` (`id_comarca` ASC, `id_ciudad` ASC, `id_provincia` ASC, `id_ca` ASC, `id_pais` ASC) ,

  INDEX `categoria` (`id_cat` ASC) ,

  CONSTRAINT `relacion2`

    FOREIGN KEY (`id_comarca` , `id_ciudad` , `id_provincia` , `id_ca` , `id_pais` )

    REFERENCES `smf_test`.`web_oracion_lugares` (`id_comarca` , `id_ciudad` , `id_provincia` , `id_ca` , `id_pais` )

    ON DELETE NO ACTION

    ON UPDATE CASCADE,

  CONSTRAINT `categoria`

    FOREIGN KEY (`id_cat` )

    REFERENCES `smf_test`.`web_oracion_cat` (`id_cat` )

    ON DELETE CASCADE

    ON UPDATE CASCADE)

ENGINE = InnoDB

DEFAULT CHARACTER SET = utf8

COLLATE = utf8_general_ci



SQL script execution finished: statements: 10 succeeded, 1 failed



el sql de phpmy admin dice:

#1005 - Can't create table 'smf_test.web_oracion' (errno: 150)


saludos
nax

#45
entiendo que no se entienda (valga la redundancia  :rolleyes:)

si bien en el equipo nos vemos una ves a la semana en algun lugar y nos podemos pasar 6 horas hablando del tema y no siempre llegamos a algo xD

así que es normal que no puedas dar tu total opinión del proyecto.. pero si te queda duda de algo.. asmelo saber.

el campo null lo descarto entonces y usaré un valor cualquiera para hacer referencia a un nulo (como el 0 que en php evalua null :D)

así es como lo tengo con los top10.

http://img15.imageshack.us/img15/2834/dibujovai.jpg

si tuviera que poner un campo para ciudad, comunidad, etc... eso ya seria un desmadre de relaciones!!! (solo lo puse a modo de ejemplo en ciudad)

me e equivocado en algo?  :rolleyes: :rolleyes: :rolleyes: :o
#46
Bases de Datos / Re: Consulta Ultimos mensajes
12 Enero 2010, 19:20 PM
a bote pronto diria...

Código (php) [Seleccionar]

$mensajes=mysql_query("SELECT tema,numero,usuario,fecha,hora FROM mensajes ORDER BY fecha");


el limit 10 es para mostrar solo 10, no para ordenarlos.

saludos
nax
#47
lo de los 2 servidores dejemoslo por imposible, de momento,  :rolleyes:

gracias por la muestra del timestamp, trabaja como me imaginé asi que creo que lo usaré para un funcionamiento mas optimo y menos engorroso.




anoche seguia dandole vueltas a la región_03 en la imagen (verde inferior).
es la mas importante así que voy a explicarla un poco mejor para que se entienda lo que quiero hacer y a ver si se les ocurren mejoras.

pero antes:
la tabla web_oracion_news y web_news se diferencian de 1 solo campo: public (tinyint)
e estado pensando en fusionar ambas tablas y con ello me quito 2 tablas de encima
y el campo public situarlo como boolean y en posibilidad de nulo. ya que solo seria usado en la categoria 'oracion'.
(las news de las redes las dejo tal cual, prefiero que sean tablas separadas, por un tema de frecuencia de uso).


Entonces paso a explicar dicha región, el tema noticias lo salto, sino en el tema pedidos oración y demás.

podriamos imaginar que es una empresa. y en la empresa se envian diferentes circulares.
La empresa tiene un representante en cada pueblo de españa. Un representante en cada comarca, uno en cada provincia, etc.

si un miembro del pueblo 'reus' quiere enviar una circular, el responsable de ese pueblo la revisa y la envia.

El responsable puede hacer 2 cosas:
1- Enviar la circular a reus.
2- Considerar que la circular puede ser de interes a la comarca, y por tal caso enviarla al responsable comarcal

el responsable comarcal la recibe y puede hacer las 2 acciones anteriores, enviarla a toda la comarca, o enviarla a su superior directo.

para esta parte del planteamiento yo pense, en un principio, el campo relevancia de la tabla web_oracion. cuando la petición se envia a la ciudad tiene relevancia 1, si el responsable la envia a la comarca adquiere relevancia 2, etc...

sigo:
una vez se hace el tramite de las circulares, cada responsable de ciudad, elige las 10 mas divertidas  ;-)
y esas 10 se publican en un top 10.
A la vez que las elige y publica, esas 10 se envian al responsable de comarca (junto con todo el resto de top10 de ciudades que pertenecen a esa comarca).

El responsable comarcal recive todos los top10 de cada ciudad, y elige las 10 que mas gracia le causaron... y las publica y las envia a su superior. etc

para esta parte (que aun no tengo tablas) pensé en crear una tabla top10 para ciudad, otra para comarca, etc.
relacionando el top 10 con el id de ciudad, para la tabla top10_ciudad.

la tabla top10_ciudad contendria algo así:

table: top10_ciudad
rows: id_top id_ciudad id_peticion posicion
          int       int            int               int (de 1 a 10)

y eso es todo creo...
mi preocupación mas grande viene con el tema relevancia.. pues el método no me convence mucho...
podria agregar a web_oracion una columna para cada id...
ejemplo id_ciudad id_comarca etc...

con posibilidad de null, si la id_ciudad es 1 pero la id_comarca es null quiere decir que tiene relevancia de ciudad, si la id_comarca es 3 es de relevancia comarcal..

pero no se si tendria que relacionar todas las tablas de ciudades, comarcas, etc a la tabla principal (web_oracion) o de la manera que está ahora podria hacerlo sin problemas...

el tema es que si es este ultimo caso, creo que la metodologia es igual que la de 'relevancia'  :rolleyes: :-X

alguna idea :huh:  :)

gracias por toda la ayuda  ;)

pd. vaya post mas pesado me a quedado! mis disculpas!  :laugh: :xD
#48
no se si entendí... pero lo guardas en una variable de session y fin del asunto  :o
#49
muchas gracias ^Tifa^, a partir de estos consejos trabajaré en los cambios al llegar a casa y si no hay problema dejo un nuevo modelo y me lo comentas  :xD

no me agrada la idea de mezclar myisam con innodb, se que este ultimo ofrece mayor integridad y por tanto es mas lento y ocupa mas...

simpre e trabajado con innodb pero mezclar las tablas SMF myisam con las de mi proyecto innodb.. no me convence... así y todo estarian linkadas solo mediante los usuarios y en teoria no deberia haber mayores problemas... veré como lo hago

lo de los integers ok, los cambiaré por tinyint en aquellos valores que creo serán escasos. de todas formas estudiaré algunos que, posiblemente, podrian superar los 127.

el tema de timestamp, bueno aun tengo la duda de en que formato se guarda y como puedo ponerlo en formato españa. Pero bueno, a base de tocar y provar, cuando llegue a casa lo confirmaré.
Si funciona como lo esperado ahorrará bastante trabajo en el php en cuanto a conversiones y demás.

muchas gracias por el tiempo otorgado.

un saludo
n4x
#50
gracias por tu respuesta  ;D

en parte habia leido respuestas tuyas por el area y me parecieron muy bien explicadas.

Ahora... en mySQL soy un verdadero desastre  :o pero me informaré de lo que dices!!!

1. TRIGGERS no se que son xD pero ahora lo busco.

El tema principal es que estoy integrando la web a SMF y por tanto.. ellos usan myisam pero yo siempre e trabajado con innoDB. Entonces las FK las uso muchisimo... si logro entender los triggers usaré eso xD
Pero abria algun problema en mesclar tablas innodb con myisam?

2. Eso lo pensé, pero como SMF usaba un integer y luego la convertia.. no se... quise dejarlo así.. que tal se lleva el campo timestamp con las comparaciones? para, por ejemplo, ordenar los comentarios de una noticia por la hora y no por el id.

3. lo tendré en cuenta, muchas gracias

4. bien, no era conciente... pero donde hay un integer(3) me parece que son las categorias que como un id muy alto espero se inserte un 99 y no mucho mas...
de todas formas lo tendré en cuenta en cuanto haga la revisión.


muchas gracias por el soporte.

felices reyes  ;D