Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Hola se pueden cruzar JOINs MYSQL

Estas en el tema de Hola se pueden cruzar JOINs MYSQL en el foro de Mysql en Foros del Web. Hola amiguetes mi pregunta es algo asi como : @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original SELECT * FROM TablaA LEFT OUTER JOIN TablaB ON TablaA ...
  #1 (permalink)  
Antiguo 31/08/2012, 13:12
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Pregunta Hola se pueden cruzar JOINs MYSQL

Hola amiguetes mi pregunta es algo asi como :


Código PHP:
Ver original
  1. SELECT * FROM TablaA
  2. LEFT OUTER JOIN TablaB
  3. ON TablaA.nombre = TablaB.nombre AND SELECT * FROM TablaB
  4. RIGHT OUTER JOIN TablaA
  5. ON TablaB.nombre = TablaA.nombre


gracias!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #2 (permalink)  
Antiguo 31/08/2012, 13:35
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Hola se pueden cruzar JOINs MYSQL

Bueno, esa sintaxis tengo mis dudas que te la acepte algún DBMS...
Pero la pregunta es: ¿Qué es exactamente lo que supones que una consulta así te debería devolver?
Porque en definitiva tiene todo el aspecto de pretender generar productos cartesianos...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 31/08/2012, 13:58
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Hola se pueden cruzar JOINs MYSQL

jajaja ... que va es que estoy un poco atrapado con dos bases de datos cruzando datos para mostrar si o no... en un email.

lo que quiero es simplificar la consulta, porque funciona!! pero es muy larga y a veces es como que se pierde la consulta y me saca un error.

esta es la consulta:

Código PHP:
Ver original
  1. $searchFocus="anuncios WHERE city='$city' AND( (money='EUR' AND budget >= $euroUserBudget) OR (money='USD' AND budget >= $euroUserBudget*$moneyUSD) OR (money='JPY' AND budget >= $euroUserBudget*$moneyJPY) OR (money='BGN' AND budget >= $euroUserBudget*$moneyBGN) OR (money='CZK' AND budget >= $euroUserBudget*$moneyCZK) OR (money='DKK' AND budget >= $euroUserBudget*$moneyDKK) OR (money='GBP' AND budget >= $euroUserBudget*$moneyGBP) OR (money='HUF' AND budget >= $euroUserBudget*$moneyHUF) OR (money='LTL' AND budget >= $euroUserBudget*$moneyLTL) OR (money='PLN' AND budget >= $euroUserBudget*$moneyPLN) OR (money='RON' AND budget >= $euroUserBudget*$moneyRON) OR (money='SEK' AND budget >= $euroUserBudget*$moneySEK) OR (money='CHF' AND budget >= $euroUserBudget*$moneyCHF) OR (money='NOK' AND budget >= $euroUserBudget*$moneyNOK)OR (money='HRK' AND budget >= $euroUserBudget*$moneyHRK) OR (money='RUB' AND budget >= $euroUserBudget*$moneyRUB) OR (money='TRY' AND budget >= $euroUserBudget*$moneyTRY) OR (money='AUD' AND budget >= $euroUserBudget*$moneyAUD) OR (money='BRL' AND budget >= $euroUserBudget*$moneyBRL) OR (money='CAD' AND budget >= $euroUserBudget*$moneyCAD) OR (money='CNY' AND budget >= $euroUserBudget*$moneyCNY) OR (money='HKD' AND budget >= $euroUserBudget*$moneyHKD) OR (money='IDR' AND budget >= $euroUserBudget*$moneyIDR) OR (money='ILS' AND budget >= $euroUserBudget*$moneyILS) OR (money='INR' AND budget >= $euroUserBudget*$moneyINR) OR (money='KRW' AND budget >= $euroUserBudget*$moneyKRW) OR (money='MXN' AND budget >= $euroUserBudget*$moneyMXN) OR (money='NZD' AND budget >= $euroUserBudget*$moneyNZD) OR (money='PHP' AND budget >= $euroUserBudget*$moneyPHP) OR (money='SGD' AND budget >= $euroUserBudget*$moneySGD) OR (money='THB' AND budget >= $euroUserBudget*$moneyTHB) OR (money='ZAR' AND budget >= $euroUserBudget*$moneyZAR) ) AND ( $preSk_FocusEnded ) AND ( name LIKE '%$searchMail%' OR title LIKE '%$searchMail%' OR comment LIKE '%$searchMail%' OR budget LIKE '%$searchMail%' OR city LIKE '%$searchMail%' OR state LIKE '%$searchMail%' OR country LIKE '%$searchMail%' OR email LIKE '%,$nombreusuario,%' OR email LIKE '%,$nombreusuario,%' ) AND refused NOT LIKE '%,$nombreusuario,%' AND readed NOT LIKE '%,$nombreusuario,%' ";

primero saco los datos del usuario de la TABLA A que los puede modificar... puede meter un presupuesto elegir una moneda (euros dolares...) ciudad pais habilidades que domina

y en la TABLA B estan los anuncios que sube la gente.. presupuesto ciudad pais y habilidad que requiere.

Esta consulta es para un gestor de correo en donde el usuario ve las coincidencias que tiene de todos los anuncios segun sus preferencias, y para mas inri esta todo embebido con AJAX, con lo cual lo de hacer la criba despues con if - contine; descartao porque la consulta MYSQL me puede volcar 15 resultados, y me los pagina de 5 en 5, pero si el continue que esta despues dela consulta me dice que no muestre esos primeros ciinco resultados entonces la primera pagina se veria sin resultados, un poco comico no?

Lo que pasa es que funciona bien porque esta todo bien pero de vez en cuando me saca este error MYSQL y me tiene todo loco!!!

for the right syntax to use near mysql_set_charset_name

En fin y se me habia ocurrido que alomejor con join se podia simplificar la cosa


el orden de lo que tengo que hacer es:

de la prmera tabla-- consultar un valor estable en algo de la segunda que es variable.
depues algo que es estable en la primera y en la segunda tabla
y concluyendo algo que es variable en la primera tabla y estable en la segunda...

menudo liazo no?
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #4 (permalink)  
Antiguo 31/08/2012, 14:04
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Hola se pueden cruzar JOINs MYSQL

Cita:
de la prmera tabla-- consultar un valor estable en algo de la segunda que es variable.
depues algo que es estable en la primera y en la segunda tabla
y concluyendo algo que es variable en la primera tabla y estable en la segunda...
Traducción, por favor. No existe un concepto "estable" o "variable" en BBDD.
¿Te refieres a que buscas un valor en la tabla A, exista o no relación con la tabla B, y viceversa?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 31/08/2012, 14:15
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Hola se pueden cruzar JOINs MYSQL

ya perdona, me refiero a que el usuario dice:

se cantar, bailar y leer (por ejemplo) mediante checks yo lo guardo asi ---> habilidades --> recojo los valores del check por ejemplo 1, 5, 9 , los sumo en una cadena, les doy forma y los guardo porejemplo .1..5..9.

y en anuncios si que el que lo postea puede elegir de un select una habilidad por ejemplo leer y lo guardo en habilidad de anuncio como 9

bien entonces pillo la cadena .1..5..9. y despues de tratarla obtengo:

1

5

y

9

por separado, entonces en la segunda consulta le digo buscame anuncios que coincidan con habilidad 1 OR 5 OR 9

asi que digamos un anuncio tiene habilidad leer (9) pues le digo donde habilidad=1 OR habilidad=5 OR habilidad=9

a eso me refiero el valor de habilidad es unico , estable .... pero las posibilidades que provienen de la tabla uno son variables, no son unicas, depende del numero de habilidades que el usuario haya checheado...
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #6 (permalink)  
Antiguo 31/08/2012, 14:28
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Hola se pueden cruzar JOINs MYSQL

Pues, mira, la verdad no sé por dónde empezar...
Lo que tienes es un serio problema porque tu estructura de datos contiene errores catastróficos para el desarrollo de consultas.

Vamos a lo básico: los campos multivaluados como el que propones están total y absolutamente prohibidos en el modelo de entidad-relación, que es el fundamento de las bases de datos. No se crean, no se usan ni sirven para nada más que darte dolores de cabeza... como el que ahora tienes.


Si tienes un atributo relacionado con una entidad (persona, digamos), tal que pueda tener N valores distintos, lo que tienes es una relación 1:N entre esa persona y una entidad conceptual (habilidad). Pero si esa entidad conceptual o real, puede estar relacionado con la primera entidad en una cardinalidad 1:N (cada habilidad puede ser asignada a diferentes personas), lo que en realidad tienes es una relación de muchos muchos (N:N) entre la primera entidad y la segunda, y para poder administrarla el modelo establece que es obligatorio crear una tercera entidad, relacional, donde cada par de IDs (uno de cada entidad) sólo pueda aparecer relacionado con el otro una única vez.
Lo que has hecho es "solucionar" como programador algo que ya tiene reglas estrictas en las bases de datos, y terminaste con un serio problema de consulta.
Lo más probable es que o no conozcas los fundamentos de las bases de datos, o bien supusiste que podías "resolverlo" de otra manera más "fácil"...
Lamento decirte que para que el sistema te funcione bien, tendrás que replantear el modelo completo.
Si quieres, te ayudamos a orientarte, pero desde lo que describes, no existe forma de escribir de una forma razonable una consulta ni optima, ni eficiente.
Mi consejo es que volvamos atrás y veamos cómo debe hacerse. Luego verás que las consultas se vuelven enormemente simples al modelar correctamente la base de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 31/08/2012, 14:49
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Hola se pueden cruzar JOINs MYSQL

ya... si tienes toda la razon, lo de los campos multi ya se que es pecado, si yo soy diseñador web, y empiezas por aqui y sigues por alla! metes la puntita y cuando te das cuenta ya la tienes toa dentro XDDD

Vamos a ver, el tema funciona, pero de vez en cuando me saca un error un petardazo de la MYSQL porque intuyo que la consulta es muy larga (que opinas tu de eso, es la que esta arriba de todo, en el primar comentario)

He intentado ahora que me sacase el error para enseñarte el texto y he hecho como 500 consultas y no me ha cascado el hijoputa, seguro que lo hace cuando suba este comentario y pruebe XDDD

Me gustaia mucho si me pudieses orientar, de como deberia hacerlo... ya que asi aprendo mas ... thanks!

PD: si se me ha colado alguna "y" en vey de "z" la culpa lo tiene el teclado aleman XDD
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....
  #8 (permalink)  
Antiguo 31/08/2012, 16:16
Avatar de protoameeba  
Fecha de Ingreso: septiembre-2005
Mensajes: 195
Antigüedad: 18 años, 7 meses
Puntos: 3
Respuesta: Hola se pueden cruzar JOINs MYSQL

Ey buenas de nuevo... ya he conseguido que me saliese el dichoso error!! alguien sabe a que se refiere y como solucionarlo...?


You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql_set_charset_name(&mysql, 'utf8')' at line 1

gracias de antemano!
__________________
Ser libre no es hacer lo ke uno kiere, sino kerer lo ke uno hace....

Etiquetas: join, joins, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:45.