[MySQL] ¿Búsqueda en varias columnas?

Hola a todos:

Vereis, llevo como una semana intentando el modo de lograr que una consulta funcione como deseo pero no lo consigo.

Esta es la línea original:
$sql = ("SELECT  * FROM event WHERE  date = '$currentdate' AND organizer = '$usercode'");


Esta línea se encuentra dentro de un bucle que itera entre los distintos días de un mes ($currentdate), buscando eventos cuyo organizador sea el usuario ($usercode).

La sentencia original no supone ningún problema, pero sí que lo hace cuando quiero que también se muestren los eventos en los que el usuario está inscrito. Para ello he de buscar en los campos $suscriber_, tal y como así:

$sql = ("SELECT  * FROM event WHERE  date = '$currentdate' AND organizer = '$usercode' OR suscriber1 = '$usercode' OR suscriber2 = '$usercode' ... y así sucesivamente... ");


Ya que está dentro del bucle y lo que itera es la fecha, no puedo iterar entre los distintos posibles nombres para suscriber_.

Lo único que se me ocurre es buscar el evento en el que en cualquier campo el valor sea $usercode, lo cuál no se cómo hacer y por más que busco info por la red no encuentro el cómo. ¿Tiene alguno de vosotros idea de qué se puede hacer?

¡Gracias y Salu2! ;)
paarentesis, sino es imposible que se cumpla la condición...
$sql = ("SELECT * FROM event WHERE (date = '$currentdate' AND organizer = '$usercode' ) OR (suscriber1 = '$usercode') OR (suscriber2 = '$usercode' )... y así sucesivamente... ");
Prueba así y me dices.
Gracias, lo de los parentesis era un poco absurdo pero el tema está en que el número de campos suscriber_ no es fijo, sino que cuando un evento llega a una cantidad de suscriptores que ningún evento había tenido antes, se crea el campo correspondiente.

EJEMPLO: El evento que más suscrisptores tenía hasta ahora digamos que tenía 15 suscriptores, de modo que el último campo que existe en la tabla es suscriber15. En el momento en el que se le añada un nuevo suscriptor se crea el campo suscriber16.

Es por esto que repetir el OR (suscriberx = '$usercode' ) resulta poco plausible, aunque provaré a crear un bucle que me genere una serie de variables para que quede más o menos del siguiente modo:

$suscribersqty = $eventdata['suscribersqty'];

for($s = 0, $s <= suscribersqty, $s++){
$var$s = " OR (suscriber$s = '$usercode')";
}

$line = for($hlpr = 0, $hlpr=$s, $hlpr++){
print "$var$hlpr ";
}

$sql = ("SELECT * FROM event WHERE (date = '$currentdate' AND organizer = '$usercode' ) $line");


Probablemente lo que escribo sea una barbaridad, pero refleja más o menos fielmente lo que quiero. XD
adan_gecko escribió:EJEMPLO: El evento que más suscrisptores tenía hasta ahora digamos que tenía 15 suscriptores, de modo que el último campo que existe en la tabla es suscriber15. En el momento en el que se le añada un nuevo suscriptor se crea el campo suscriber16.


quizas seria mas practico hacer otra tabla y almacenar las subscripciones ahi.

es decir:

eventos:
--id:1 organizador:4
--id:2 organizador:4
--id:3 organizador:3

subscripciones
--id:1 evento:1 usuario:3
--id:2 evento:1 usuario:6
--id:3 evento:1 usuario:7
--id:4 evento:2 usuario:3
--id:5 evento:3 usuario:4
--id:6 evento:3 usuario:5


es la mejor forma, asi puedes tener ilimitados usuarios sin hacer nada especial...


luego cuando busques los eventos combinas las dos tablas y listo; por ejemplo:

select e.id, e.organizador, s.usuario from event e, subscripciones s where e.id=s.evento and e.date='$currentdate' and (e.organizer = '$usercode' or a.usuario='$usercode')



perdonadme si he escrito una burrada pero es muy tarde ya xD (tengomis dudas en la sql ahora mismo... xD pruebala, a lo mejor funciona y todo)
Muchas gracias por la ayuda, la verdad es que tenía un barullo mental inmenso. Al final me valió algo como

   $sql = ("SELECT * FROM event, suscripciones WHERE suscripciones.suscriptor = '$usercode' AND event.id = suscripciones.event AND event.date = '$currentdate'");


Con eso parece que va tirando [sonrisa] .

Lo dicho, mil gracias.
4 respuestas