sql запрос

12
It-mcp.ru
На сайте с 06.04.2010
Offline
76
908

Подскажите, пожалуйста. Надеюсь с разделом угадал.

Необходим следующий sql запрос через php файл:

Из таблицы, где есть строки

1) артист

2) песня

3) кол-во проголосовавших "ЗА" - $up

4) кол-во проголосовавших "Против" - $down

необходимо вытянуть все песни одного исполнителя, кроме одной песни, например ($song)

и вывести нумерованным списком. Сортировка списка должна быть по $rating, где $rating = $up - $down (другими словами - по популярности)

Кто разбирается в mysql, прошу помочь

Отзывы searchengines.ru (/ru/forum/500625), maultalk.ru (http://www.maultalk.com/topic59939.html)
[umka]
На сайте с 25.05.2008
Offline
456
#1

SELECT *, (up-down) rating FROM music WHERE song!='$song' ORDER BY rating DESC

Лог в помощь!
Алексей Барыкин
На сайте с 04.02.2008
Offline
272
#2

SELECT artist, song, up, down, (up-down) AS rating

FROM <имя таблицы>

WHERE artist = 'Киркоров' AND song <> 'Зайка моя'

ORDER BY rating

+ как отобразить

It-mcp.ru
На сайте с 06.04.2010
Offline
76
#3

Насколько я понимаю, * массив всех строк из таблицы, а мне нужен массив только песен определенного исполнителя

It-mcp.ru добавил 05.04.2011 в 11:58

А как вывести нумерованным списком вида:

1) песня +15

2) песня +10

3) песня + 5

AN
На сайте с 05.06.2004
Offline
243
#4
It-mcp.ru:
Насколько я понимаю, * массив всех строк из таблицы

Не строк, а столбцов:)

Размещу ваши баннеры на посещаемых сайтах. Места еще есть! Возможен безнал. (/ru/forum/324945) Нужны копирайтеры/рерайтеры - медики. Пишите в личку. (/ru/forum/676932)
It-mcp.ru
На сайте с 06.04.2010
Offline
76
#5

$query2 = "SELECT artist, title FROM `songlist` WHERE artist LIKE '$msg2'";

$update = mysql_query($query2);

if ($line = mysql_fetch_array($update, MYSQL_ASSOC)) {

printf ("ID: %s Name: %s", $line['artist'], $line['title']);

}

mysql_free_result($query2);

Выводит только один результат, хотя их несколько.

Такой код не выводит вообще ничего

$query2 = "SELECT artist, title, up, down, (up-down) AS rating FROM 'songlist' WHERE artist = '$msg2' ORDER BY rating";

$update = mysql_query($query2);

if ($line = mysql_fetch_array($update, MYSQL_ASSOC)) {

printf ("ID: %s Name: %s", $line['artist'], $line['title']);

}

mysql_free_result($query2);

M
На сайте с 02.06.2010
Offline
78
#6
It-mcp.ru:
$query2 = "SELECT artist, title FROM `songlist` WHERE artist LIKE '$msg2'";
$update = mysql_query($query2);
if ($line = mysql_fetch_array($update, MYSQL_ASSOC)) {
printf ("ID: %s Name: %s", $line['artist'], $line['title']);
}
mysql_free_result($query2);

Выводит только один результат, хотя их несколько.

Такой код не выводит вообще ничего

$query2 = "SELECT artist, title, up, down, (up-down) AS rating FROM 'songlist' WHERE artist = '$msg2' ORDER BY rating";
$update = mysql_query($query2);
if ($line = mysql_fetch_array($update, MYSQL_ASSOC)) {
printf ("ID: %s Name: %s", $line['artist'], $line['title']);
}
mysql_free_result($query2);

Вывод всех записей:

$query2 = "SELECT artist, title FROM `songlist` WHERE artist = '$msg2'";

$update = mysql_query($query2);
while ($line = mysql_fetch_assoc($update)) {
printf ("ID: %s Name: %s", $line['artist'], $line['title']);
}

и выводить так не проще?

echo "ID: ".$line['artist']." Name: ".$line['title'];

mion добавил 05.04.2011 в 13:06

В то, что у вас не выводит ничего, то попробуйте убрать кавычки в имени таблицы.

mion добавил 05.04.2011 в 13:07

Кавычки должны быть такие: ` (Клавиша ё)

mion добавил 05.04.2011 в 13:08

Вывод нумерованного списка:

$query2 = "SELECT artist, title FROM `songlist` WHERE artist = '$msg2'";

$update = mysql_query($query2);
$i = 0;
while ($line = mysql_fetch_assoc($update)) {
$i++;
echo $i.". ID: ".$line['artist']." Name: ".$line['title']."<br />";
}

mion добавил 05.04.2011 в 13:11

Такой код не выводит вообще ничего

$query2 = "SELECT artist, title, up, down, (up-down) AS rating FROM 'songlist' WHERE artist = '$msg2' ORDER BY rating";

Попробуйте так (т.е. убрать кавычки с имени таблицы):

$query2 = "SELECT artist, title, up, down, (up-down) AS rating FROM songlist WHERE artist = '$msg2' ORDER BY rating";
It-mcp.ru
На сайте с 06.04.2010
Offline
76
#7

1) Спасибо Mion, в отдельности за кавычки. Даже и не догадывался.

2) Конечный вариант такой:

$query2 = "SELECT artist, title, up, down, (up-down) AS rating FROM `songlist` WHERE artist = '$msg2' ORDER BY rating DESC";

$update = mysql_query($query2);

while ($line = mysql_fetch_assoc($update)) {

echo "ID: ".$line['artist']." Name: ".$line['title']. " Up: ".$line['up']. " - Down: ".$line['down'];

echo "<br>";

}

Осталось только список пронумеровать и лимит в 10 записей.

M
На сайте с 02.06.2010
Offline
78
#8
It-mcp.ru:
1) Спасибо Mion, в отдельности за кавычки. Даже и не догадывался.
2) Конечный вариант такой:

$query2 = "SELECT artist, title, up, down, (up-down) AS rating FROM `songlist` WHERE artist = '$msg2' ORDER BY rating DESC";
$update = mysql_query($query2);
while ($line = mysql_fetch_assoc($update)) {
echo "ID: ".$line['artist']." Name: ".$line['title']. " Up: ".$line['up']. " - Down: ".$line['down'];
echo "<br>";
}

Осталось только список пронумеровать и лимит в 10 записей.

Вот нумерация и лимит на 10 записей.

$query2 = "SELECT artist, title, up, down, (up-down) AS rating FROM `songlist` WHERE artist = '$msg2' ORDER BY rating DESC limit 10";

$update = mysql_query($query2);
$i = 0;
while ($line = mysql_fetch_assoc($update)) {
$i++;
echo $i.". ID: ".$line['artist']." Name: ".$line['title']. " Up: ".$line['up']. " - Down: ".$line['down'];
echo "<br>";
}
It-mcp.ru
На сайте с 06.04.2010
Offline
76
#9

Благодарю, чуть с кавычками поработал. и пошло.

P.s. странно, вроде же раньше кнопка "поблагодарить" была....

It-mcp.ru добавил 05.04.2011 в 13:35

Хм. а как же показывать сам рейтинг. Пробовал так -

$ups= line["up"];

$downs=line['down'];

$rating= $ups - $downs;

$i++;

echo $i."<a href=\"#\"> ".$line["artist"]." Name: ".$line["title"]."</a><br>".$rating;

Все вопрос решен.

It-mcp.ru
На сайте с 06.04.2010
Offline
76
#10

Подскажите, пожалуйста. Есть код:

$query = "SELECT album FROM `songlist` WHERE artist = '$msg2' ";

$update = mysql_query($query);

$i = 0;

while ($line = mysql_fetch_array($update)) {

$line['album'] = array_unique($line['album']);

$i++;

echo $i.". ".$line['album']."</br>";

Но он не работает. Должен выводить списком:

1. Название Альбома

2. Название Альбома

3. Название Альбома

Причем не должны выводить одинаковы записи (альбомы)

В чем ошибся?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий