www.state-it.info

Gran base de respuestas a las preguntas de los desarrolladores
Header decor

Cómo crear una consulta sql?

noname95 2018-11-06 18:06:03

hola. No puedo escribir la consulta para prescindir de las "muletas", ayuda por favor :)

Hay:

  • la tabla de usuarios id, name, moderator_id, group_id
  • la tabla de noticias id, name, user_id, text, active
group_id 1 = usuarios, group_id 2 = moderadores
moderator_id = id de usuario que ha designado como moderador para el usuario

Mi tarea en la oficina de personal del moderador sacar todas las noticias sólo de los usuarios, de los cuales yo (el moderador al ver su lc) designado como moderador.

Lo he probado así, la muleta y por supuesto el безуспешный:
$query_tmp = "SELECT id FROM users WHERE group_id='1' AND redactor='".$my['id']."' ORDER BY id DESC";
$query = mysql_query($query_tmp);

$query_tmp_listnews = '';
while ($res_user = mysql_fetch_array($query)) {
	$query_tmp_listnews .= "(SELECT * FROM news WHERE user_id='".$res_user['id']."' AND active='1') + ";
}

$query_tmp_news = 'SELECT('.$query_tmp_listnews.') ORDER BY id DESC';
$iquery = mysql_query($query_tmp_news);

fanrok 2018-11-06 18:10:19

JOIN


Total answers: 3

xtress 2018-11-06 18:15:48

redactor='".$my['id']."'

Un redactor? De donde redactor? La base de datos y la tabla de usuarios no sabe nada acerca de esta "columna".

Que, m-m-m, cosas interesantes que se hacen en el segundo y 3m consulta? Tienes una consulta de totales se ve como
SELECT (SELECT() + SELECT() + SELECT() ...)
¿Por qué es todo?

Yo por supuesto que entiendo que es por ignorancia, pero...
En general, con mysql_query yo hace mucho tiempo que no trabajaba, por lo tanto, обойдусь simplemente la dirección:
1) las Líneas de 5 y hasta el fin de eliminar;
2) While o cualquier cosa en la que recibimos todos los id de la primera consulta;
3) Leemos el manual de https://dev.mysql.com/doc/refman/8.0/en/comparison... ;
4) creamos la consulta con el uso de IN y todos los id de noticias;
5) Выдергиваем todos los datos de una petición sin que pones, muletas;

p.s.
bueno, o utilizamos JOIN como te recomendaron más arriba.

fanrok 2018-11-06 18:24:19

Puede una opción

select id from art where user_id in (select id from users where moderator_id = 2)

Iglint 2018-11-06 18:36:55

se Puede a través de join, es posible a través de una subconsulta. La consulta es simple, no es complicado.

SELECT * FROM news as n JOIN users as u ON u.id = news.user_id AND u.moderator_id = ?

SELECT * FROM news WHERE user_id IN (SELECT id FROM USERS WHERE moderator_id = ?)

Preguntas relacionadas:

Footer decor

© www.state-it.info | Base of answers to questions for developers and programmers.