Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Обработать таблицу "Расход основных материалов на выплавку 1т углеродистой мартеновской стали"

Проблемы с решением этой задачи. Помогите, пожалуйста

Обработать таблицу:

Расход основных материалов на выплавку 1т углеродистой мартеновской стали
Материал
Количество, тЦена, руб./тСтоимость, руб.
I
II
III
IV
V
1
2
3
4
5
6
Чугун жидкий
Чугунный лом
Стальной лом
Стальная стружка
Ферромарганец
Ферросилиций
0.63
0.01
0.35
0.02
0.007
0.012
27.4
7.5
16
13
97
48
...
...
...
...
...
...
ИТОГО
...
Ответ:

Не по теме:

Сообщение от salat12345
я в программировании вообще нуль
Это не является аргументом, чтобы Вам помогать. Но, с другой стороны... Скорее всего, Вы считаете, что программирование Вам никогда не потребуется: сдал и забыл. Такое мнение вполне нормальное, и ничем не хуже других мнений. Если, конечно, Вы не учитесь на программиста. У каждого своя жизнь, в конце концов.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const goriz = '+---+----------------------+---------------+--------------+----------------+';
 
type ingred = record
                nazw: string[20];
                kol, cena, stoim: real
              end;
 
var rashod: array [1..6] of ingred =
       ((nazw: 'Чугун жидкий';     kol: 0.63;  cena: 27.4; stoim: 0),
        (nazw: 'Чугунный лом';     kol: 0.01;  cena:  7.5; stoim: 0),
        (nazw: 'Стальной лом';     kol: 0.35;  cena: 16;   stoim: 0),
        (nazw: 'Стальная стружка'; kol: 0.02;  cena: 13;   stoim: 0),
        (nazw: 'Ферромарганец';    kol: 0.007; cena: 97;   stoim: 0),
        (nazw: 'Ферросилиций';     kol: 0.012; cena: 48;   stoim: 0));
    itogo: real;
    n: integer;
 
begin
  itogo := 0;
  writeln('Расход основных материалов на выплавку 1т углеродистой мартеновской стали:');
  writeln(goriz);
  writeln('| № |       Материал       | Количество, т | Цена, руб./т | Стоимость, руб |');
  writeln(goriz);
  for n := 1 to 6 do
    with rashod[n] do
      begin
        stoim := kol * cena;
        writeln('| ', n, ' | ', nazw, ' ':20 - length(nazw), ' | ', kol:9:3, '     | ', cena:9:2, '    | ', stoim:10:2, '     |');
        itogo := itogo + stoim
      end;
  writeln(goriz);
  writeln('|   | ИТОГО:                                              | ', itogo:10:2, '     |');
  writeln('+---+-----------------------------------------------------+----------------+');
  readln
end.

Не по теме:

Правда, у меня такое чувство, что я Вам нисколечко не помог...

Вопрос: Рандомно выбрать из таблицы 10 записей

Здравствуйте. уважаемые форумчане!

Не знаю как написать запрос, который будет беспорядочно выбирать из таблицы 10 записей.
В интернете покопался, нашел только (ТОР):
Код C++
1
2
3
4
5
6
7
8
9
    ADOQuery1->SQL->Clear();
    ADOQuery1->SQL->Add("\
    SELECT TOP 10, Voprosy_po_testam.id, Voprosy_po_testam.id_tem, Voprosy_po_testam.vopros, \
    Voprosy_po_testam.ot1, Voprosy_po_testam.ot2, Voprosy_po_testam.ot3, Voprosy_po_testam.ot4, \
    Voprosy_po_testam.pr_ot\
    FROM Temy_testov INNER JOIN Voprosy_po_testam ON Temy_testov.id_tem = Voprosy_po_testam.id_tem \
    WHERE naim_temy = :Pnaim_temy");
    ADOQuery1->Parameters->ParamByName("Pnaim_temy")->Value=cript(ListBox1->Items->Strings[ListBox1->ItemIndex], "!");
    ADOQuery1->Open();
Но он выбрал 10 записей и все! При повторном нажатии кнопки выбирает те же самые записи в таком же порядке.
Как правильно вывести записи?
Ответ:
Сообщение от _Dimon_
попробуй
А можно сделать, чтобы он вывел не больше 10???

*select TOP 10.... //точно не поможет, так как он сначала выберет 1,2,3,5,6,7,8,9,10 (4 пропустит, и каждый раз будет выводить этот же порядок.)

Добавлено через 19 минут
Попробовал так:
Код C++
1
ORDER BY rnd(Temp_Voprosy_po_testam.id) LIMIT 10
из темы .
Но почему то пишет ошибка синтаксиса.

Добавлено через 47 минут
Ошибался на счет ТОР)))
Сделал так:
Код C++
1
2
3
4
5
6
7
8
9
    ADOQuery3->SQL->Clear();
    ADOQuery3->SQL->Add("\
    SELECT TOP 10, Temp_Voprosy_po_testam.id, Temp_Voprosy_po_testam.vopros, \
    Temp_Voprosy_po_testam.ot1, Temp_Voprosy_po_testam.ot2, \
    Temp_Voprosy_po_testam.ot3, Temp_Voprosy_po_testam.ot4, \
    Temp_Voprosy_po_testam.pr_ot\
    FROM Temp_Voprosy_po_testam\
    ORDER BY rnd(Temp_Voprosy_po_testam.id)");
    ADOQuery3->Open();
Вопрос: Правильное создание и заполнение html таблицы и запись данных в цикле

Прошу помощь новичку, направить в нужное русло).

Задача создать html таблицу, заполнить ее вручную и записать данные в БД mysql.

Есть 2 варианта создания таблицы:
1)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
 
 
$query_i=mysql_query('select t.proc,r.name_asr,w.name_u from process t,asr y,asr_name r,und_proc w ,under e
where t.id=y.id
and y.id_asr=r.id
and y.id_a=e.id_proc
and  e.id_name_u=w.id
order by e.id
');
 
if($query_i)
{
 
 echo "<table border='1'><th> Процесс </th><th> Название </th> <th> Подп </th>
 <th> 1 </th>
 <th> 2 </tr>";
 
 
    while($res1=mysql_fetch_array($query_i))
    {
    echo "<tr><td>{$res1['0']}</td>
    <td>{$res1['1']}</td>
    <td>{$res1['2']}</td>
    <td><input type='text' name='test1'></td>
    <td><input type='text' name='test2'></td></tr>
 ";
    }
    echo "</body></table>";
2)
HTML5
1
2
3
4
5
6
7
8
<table border="1">
    <tr><th>Процесс</th><th>Название</th><th>Подп</th><th>Статус</th><th>Комметарий</th></tr>
    <tr><td rowspan="9">Загрузка</td><td rowspan="3">MA</td><td>ком</td><td><input type="text" name="1_1"></td><td><input type="text" name="1_2"></td></tr>
    <tr><td>SC</td><td><input type="text" name="2_1"></td><td><input type="text" name="2_2"></td></tr>
    <tr><td>SN</td><td><input type="text" name="3_1"></td><td><input type="text" name="3_2"></td></tr>
    <tr><td rowspan="3">т M</td><td>ком</td><td><input type="text" name="4_1"></td><td><input type="text" name="4_2"></td></tr>
    <tr><td>SC</td><td><input type="text" name="5_1"></td><td><input type="text" name="5_2"></td></tr>
    
(2-вариант выглядит лучше 1-го)

2-ой вопрос, как заполнить таблицу, каждая строка должна иметь свой id, получается нужно каждую строку "insert"-ить и по отдельности записывать, а нужно одной кнопкой.

Если смог объяснить, помогите...
Ответ:
Сообщение от serb15
каждая строка должна иметь свой id
Ну так цепляй к id еще и счетчик, например:

PHP
1
2
3
4
5
$i = 1;
while($res1=mysql_fetch_array($query_i)) {
echo '<input type="text" id="test_'.$i.'">'
$i= $i + 1;
}
Как вариант вместо счетчика использовать id из таблицы базы, я просто не понял, что нужно сделать.

ПС Используйте обертку синтаксиса вместо обычного спойлера, что бы код читался лучше. Спасибо.
Вопрос: Вывод из таблицы MySQL записей в виде html таблицы и дальнейшая их обработка

И снова здравствуйте! На этот раз я со сложным вопросом.
Мне нужно вывести определенные записи из таблицы MySQL и собрать их в таблицу html с дальнейшей обработкой.
Начну по порядку. По поводу вывода данных в таблицу нашел вот это: Вывести из таблицы MySQL все записи в виде html таблицы, не зная имена и колличество столбцов
Взял оттуда предложенный код, подогнал под себя и получил вот это:
Код PHP
1
$MySQLRecordSet = mysql_query("SELECT id, wm_date, wm_currency, wm_trade, wm_sum, tg_sum, status, wm_note FROM trades WHERE user_wmid = 300584632018 ORDER BY id DESC LIMIT 1000");
Результат: http://oc.zone-d.org/1.php
Все супер! Работает. Только никакого юзабилити. Нужно условные значения из базы расшифровать для пользователя.
id - (понятно, что автоинкремент) порядковый номер обращения пользователя нужно вписать как "'0000'.$id"
wm_date - дата заявки, выводим как есть, т.е. не будем заморачиваться на переворот из 2015-04-16 в 16.04.2015 или даже 16 апреля 2015, оставим пока как есть, хрен с ним. Главное работает.
wm_currency - это валюта, при значении "1" в таблицу нужно вписать WMZ, при значении "0" - WMK
wm_trade - значение "1" - покупка, знчение "0" - продажа
wm_sum - Сумма выводим без модерации
tg_sum - тоже сумма и тоже без модерации
Теперь самое сложное.
status - статус заявки. ипринимает значения 0,1,2,3,4. Значение "0" ставится автоматом при подаче заявки, значения 1 и 2 устанавливает пользователь в этой таблице. Т.е. выстроилась таблица, пользователь выбрал нужную ему строку (в теории самую верхнюю, а на практике... сами знаете) и предполагаю, сто полем <select> выбирает или подтверждение - значение "1" или отказ - значение "2". Следом меняет значение
wm_note - Примечание к заявке. Текстовое поле ограниченной длины и нажимает "СОХРАНИТЬ".
Тут возникает еще вопрос, это должна быть одна кнопка сохранить на всю таблицу, т.е. пользователь меняет значения на нескольких строках и оптом все сохраняет или же на каждой строке есть кнопка Сохранить и перезаписать указанные значения в базе.

Есть еще фишка для усложнения )))
Если поле status имеет значения 0-1-2, то вывод поля <select> с возможностью перезаписи значения, а если 3 или 4, что означает ответ админа, что заявка принята или обработана, то выводить просто текстом статус заявки. Например просто текст: ОБРАБОТАНО и заявка хранится в истории.

Перечитал свою задачу, самому страшно... Кто чем поможет, кто подсказку на верное направление даст?
Думаю, что надо поэтапно браться за работу. Сперва wm_currency и wm_trade выводить в пользовательском режиме и т.д.

Добавлено через 6 часов 3 минуты
Загрузил, да? 33 просмотра - ни одного ответа. Ну хоть вопросы наводящие задавайте, я хоть пойму куда мне думать. Может быть.
Ответ:
Цитата Сообщение от denikos Посмотреть сообщение
До меня дошел смысл ваших слов!
Вопрос: Вывод большущей таблицы

Всем добрый день)
Задача вывести пользователя большууущую таблицу
записей по одному критерию over 2000.
Завернул таблицу в див дабы избежать растягивания таблицы но загрузка таблицы и вообще работа с ней занимает длительное время. Можете подсказать какие-нибудь действующие способы решения проблемы

Думал насчет постраничной навигации, во первых не пойму как это сделать, во вторых это перезагрузка страницы:

HTML5
1
2
3
4
5
<ul class="pagination">
  <li class="disabled"><span>&laquo;</span></li>
  <li class="active"><span>1 <span class="sr-only">(current)</span></span></li>
  ...
</ul>
Был у меня вариант обработать на js, но тогда все равно сервер отдает всю таблицу пользователю.
Подскажите как бы это решить) Заранее примного благодарен
Ответ: Пересмотрел уроки, перечитал материал и понял суть. Но теперь такая беда:
При открытии страницы выводится 20 записей, при переходе на любую другую опять загружается вся таблица....
Понимаю что накосячил где-то с лимитом, но найти ошибку не могу. Прошу вашей помощи
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
   <table class="table table-hover">   
      <thead>
        <tr>
            <th>№ п/п</th>
            <th>1</th>
            <th>2</th>
                      <th>3</th>
            <th>4</th>
  
                      <th>?</th>
        </tr>
    </thead>
     
    <tbody>
    
      <?php
$num=20;            //Количество строк на странице
$page=$_GET['page'];   
$result00=mysql_query("SELECT COUNT(*) FROM sklad");
$temp=mysql_fetch_array($result00);
$posts=$temp[0];
$total=(($posts-1)/$num)+1;
$total=intval($total);
$page=intval($page);
if(empty($page) or $page <0) $page =1;
if($page>$total) $page=$total;
$start=$page*$num-$num;
 
 
 
$pp = 1;
$sqqqqq="SELECT * from sklad LIMIT ".$start.", ". $num;
$resultprov = mysql_query($sqqqqq);
while ($row = mysql_fetch_array($resultprov)) {
 
echo "<tr>";
echo "<td>".$pp."</td>";
echo "<td>".$row['1']."</td>";
echo "<td>".$row['2']."</td>";
echo "<td>".$row['3']."</td>";
echo "<td>".$row['4']."</td>";
    </tbody>
     
 </table> 
        <?php
while($row=mysql_fetch_array($resultprov)) 
             if ($page!=1)$pervpage='<a href=childrenadd.php?page=1>Первая</a> | <a href=childrenadd.php?page='.($page-1).'>Предыдущая</a> | ';
           
 
             if ($page!=$total) $nextpage=' | <a href=childrenadd.php?page='.($page+1).'>Следующая</a> | <a href=childrenadd.php?page='.$total.'Последняя</a>';
 
             if ($page-5>0) $page5left='<a href=childrenadd.php?page='.($page-5).'>'.($page-5).'</a> | ';
 
             if ($page-4>0) $page5left='<a href=childrenadd.php?page='.($page-4).'>'.($page-4).'</a>| ';
 
             if ($page-3>0) $page5left='<a href=childrenadd.php?page='.($page-3).'>'.($page-3).'</a> | ';
   
             if ($page-2>0) $page5left='<a href=childrenadd.php?page='.($page-2).'>'.($page-2).'</a> | ';
 
             if ($page-1>0) $page5left='<a href=childrenadd.php?page='.($page-1).'>'.($page-1).'</a> | ';
   
             if($page+5 <=$total) $page5right=' | <a href=childrenadd.php?page='.($page+5).'>'.($page+5).'</a>';
  
             if($page+4 <=$total) $page4right=' | <a href=childrenadd.php?page='.($page+4).'>'.($page+4).'</a>';
             if($page+3 <=$total) $page3right=' | <a href=childrenadd.php?page='.($page+3).'>'.($page+3).'</a>';
 
             if($page+2 <=$total) $page2right=' | <a href=childrenadd.php?page='.($page+2).'>'.($page+2).'</a>';
   
             if($page+1 <=$total) $page1right=' | <a href=childrenadd.php?page='.($page+1).'>'.($page+1).'</a>';
 
                 if ($total>1)
          
               echo "<div class="pstrnav">";
               echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'</b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
                 echo "</div>";
             
 
             ?>
Добавлено через 1 час 2 минуты
Код рабочий) Проблема решилась))) Не на тот скрипт ссылки вставил))
Сообщение от fidel42rus
<a href=childrenadd.php?page=
бывает...

Просто оставлю это здесь... может кому пригодится

Добавлено через 2 часа 30 минут
На самом деле логика оказалась простая, узнать количество строк для того чтобы понять на сколько страниц выводить и в какими порциями выдавать, и по запросу с лимитом от какой строки до какой выдавать, а кнопки ссылки_)
Вопрос: обработка чекбоксов с записью в бд - PHP БД

Уважаемые программисты, прошу помощи! Тема думаю достаточно простая для вас опытных... я только учусь, перелапатила уже кучу информацию, но все же туплю)
На странице есть форма для пользователя со списком видов работ (чекбоксы) Пользователь может выбрать одно или несколько значений.
Вопрос:
1. как обработать форму с записью в БД?
2. как правильно хранить в БД информацию, учитывая связь многим ко многим, а также с дальнейшей целью фильтрации по видам работ?
Если честно совсем запуталась со связями таблиц.
есть три таблицы:
1. id пользователя и другая инфо по нему
2. id видов работ и наименование видов работ
3. id пользователя и id видов работ

Как правильно записывать информацию о выбранных чекбоксах для определенного id-пользователя?

Заранее благодарю за помощь.

<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 1
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 2
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 3
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 4
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 5
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 6
Ответ:
natasha111222 пишет:
3. id пользователя и id видов работ

id записи, id пользователя и id видов работ

natasha111222 пишет:
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 1
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 2
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 3
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 4
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 5
<input type="checkbox" name="vidrabot[]" value="1"> Вид работ 6

наверное все же с значениями с id видов работ
<input type="checkbox" name="vidrabot[]" value="2"> Вид работ 2
<input type="checkbox" name="vidrabot[]" value="3"> Вид работ 3
Вопрос: Неправильная нумерация записей datagridview

Здрасти. Столкнулся с такой проблемой. В datagridview выводится таблица(10 записей). Эта таблица имеет дочернюю таблицу(1к1 связь, в ней тоже 10 записей). Хочу добавить новую запись, для этого использую bindingnavigetor. Кликаю на кнопочку добавить, и мне создается строка с номер -1, а надо что-бы номер был 11. Перерыл весь интернет, но решения не нашел. Может кто-то подсказать как это исправить? Или быть может есть какая-то статейка с ответом?
Заранее спасибо.
Ответ:
Сообщение от Ascanio
и мне создается строка с номер -1, а надо что-бы номер был 11
У вас поле autoincrement. Для новой записи номер не имеет значения, т.к. при создании записи он будет создан сервером на основе имеющихся в этом поле данных. Если кто-то, пока вы добавляли запись, уже создал новую с номером 11, то ваша запись получит номер 12.
Вопрос: Ошибка при удалении записи из БД в ibexpert

Пытаюсь сделать удаление записи из бд, а точнее из связанной с другими сущностями таблицы и получаю ошибку

Код такой:

+
procedure TJournalKadrov.Button4Click(Sender: TObject);
var
  _id: Integer;
begin
  if DataModule1.IBSotr.RecordCount = 0 then
  begin
    ShowMessage('Ошибка, таблица пуста');
    Exit;
  end;

  if (DataModule1.AdressSotr.RecordCount > 0) then
  begin
    if MessageDlg('В дочерних таблицах имеются записи,' + #13 +
                  'Вы точно хотите удалить фильм с полной информацией о нём?',
                  mtInformation, [mbYes, mbCancel], 0) = mrYes then
    begin
      while DataModule1.AdressSotr.RecordCount > 0 do
      begin
        AdressDel.Params.ParamByName('id').Value := DataModule1.AdressSotrID_NUMBER_ADRESS.Value;
        try
          AdressDel.ExecSQL;
        except
          DataModule1.AdressSotr.Transaction;
          ShowMessage('Ошибка, фильм не удалён, ошибка при очистке жанров');
          Exit;
        end;
        DataModule1.MainTranscation.CommitRetaining;
        DBGrid1CellClick(nil);
      end;

      SotrDel.Params.ParamByName('id').Value := DataModule1.IBSotrID_CODE_SOTRUDNIKA.Value;
      try
        SotrDel.ExecSQL;
      except
        DataModule1.SotrDel.Transaction;
        ShowMessage('Ошибка, фильм не удалён');
        Exit;
      end;
      DataModule1.MainTranscation.CommitRetaining;
      DataModule1.IBSotr.Active:=false;
      DataModule1.IBSotr.Active:=true;
      DBGrid1CellClick(nil);
      ShowMessage('Фильм и вся информация о нём удалёны');
    end;
    Exit;
  end;
  if MessageDlg('Удалить фильм?', mtInformation, [mbYes, mbCancel], 0) = mrYes then
  begin
    _id := DataModule1.IBSotrID_CODE_SOTRUDNIKA.Value;
    SotrDel.Params.ParamByName('id').Value := _id;
    try
    SotrDel.ExecSQL;
    except
      DataModule1.SotrDel.Transaction;
      ShowMessage('Ошибка, фильм не удалён');
      Exit;
    end;
    DataModule1.MainTranscation.CommitRetaining;
    DataModule1.IBSotr.Active:=false;
    DataModule1.IBSotr.Active:=true;
    DBGrid1CellClick(nil);
    ShowMessage('Фильм удалён');
  end;

end;

на dbgridceellclick:
  DataModule1.AdressSotr.Params.ParamByName('ID_NUMBER_ADRESS').Value:=DataModule1.IBSotrID_CODE_SOTRUDNIKA.Value;
  DataModule1.IBSotr.Active:=false;
  DataModule1.IBSotr.Active:=true;


и запросы в ibquery:

delete from ADRESS_SOTR
where ID_NUMBER_ADRESS=:id
...
delete from SOTRUDNIK
where ID_CODE_SOTRUDNIKA=:id


для вывода таблиц использовал такие запросы

select * from SOTRUDNIK
left join ADRESS_SOTR on ADRESS_SOTR.ID_NUMBER_ADRESS=SOTRUDNIK.NUMBER_ADRESS_ID
left join DOLJNOST on DOLJNOST.ID_CODE_DOLJNOST=SOTRUDNIK.NUMBER_DOLJ_ID

-- и

select * from ADRESS_SOTR


К сообщению приложен файл. Размер - 13Kb
Ответ:
goldmi45
MaratIsk
вот как хранится информация об абоненте у меня (структура упрощена)
справочник абонентов (ФИО, номер квартиры, ID дома) - справочник домов (ID дома, номер дома, ID улицы) - справочник улиц (ID улицы, название)


И твой совет поможет гарантированно решить ошибку с нарушением целостности, которая возникла у ТСа? Или при удалении улицы у него выскочит ошибка, что нарушение целостности в таблице домов, а при удалении дома - нарушение целостности в таблице абонентов? Или не возникнет, если нет ключа. Кстати, ещё один "совет" - удалить, а лучше совсем не создавать вторичный ключ. Никакой. А для надёжности и первичный.
+ Как-то так


удалять улицу, с которой связаны дома нельзя
удалять дом, с которым связаны абоненты нельзя
удалить абонента - можно

автор
а лучше совсем не создавать вторичный ключ. Никакой. А для надёжности и первичный
а истерить по поводу своего неумения проектировать бд - неумно :)
Вопрос: Посчитать одинаковые записи

Здравствуйте! Потратил час и сломал голову... Помогите пожалуйста!

Есть таблица shop_buys


К примеру 2 записи с server = Nano и item = 1 и amount =4. Нужно чтобы вывело в таблицу 1 запись с server = Nano, item = 1, amount =8. Короче, если одинаковые server и item, то amount складывает. Раньше был while, но оно ничего не складывало и делало 2 записи, а надо 1. Как сделать чтобы выводило примерно так для player = LPvilak?

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<table>
   <thead>
      <tr>
         <th>Количество</th>
         <th>Название </b></th>
         <th>Сервер</b></th>
      </tr>
   </thead>
   <tbody>
      <tr>
         <td>2</td>
         <td>CUSTOMBOXES_ITEMLOOTBOX</td>
         <td>Nano</td>
      </tr>
      <tr>
         <td>1</td>
         <td>CUSTOMBOXES_ITEMLOOTBOX</td>
         <td>HardNano</td>
      </tr>
   </tbody>
</table>
Ответ: Подскажите ещё пожалуйста, как эти данные вывести в таблицу

PHP
1
$select = $db->query("SELECT SUM(`amount`) `amount`, `item`, `server` FROM `shop_buys` WHERE `player` = '{$member_id['name']}' GROUP BY `item`, `server`");
Добавлено через 11 часов 29 минут
Надо вывести, но как непонятно... У меня вообще получаетя каша
Вопрос: Подставить в таблицу количество записей с пустой датой, даже если их ноль

В таблицу категорий выбираю количество записей таблицы дел с пустой датой, всё работает, но если таковых записей нет, то категория не выводится вообще.
А нужно, чтобы в таких случаях у категории стоял "ноль".
Делаю так:
SQL
1
2
3
4
SELECT kats.N,kats.kat,COUNT(tasks.N) AS itog FROM tasks
LEFT JOIN kats ON kats.N=tasks.kat
WHERE tasks.date2 IS NULL
GROUP BY kats.N,kats.kat
Как сделать, чтобы категории, по которым в таблице дел нет даты тоже выводились в таблице, но с нулём.
Подскажите, пожалуйста.
Ответ:
Сообщение от kavasaka
ну та вы же так и хотели:
Да, наверное не совсем точно сформулировал.
Нужно знать, сколько в каждой категории строк без дат.
По третьей категории не видно сколько строк без дат, т.к. эта категория не попала в выборку.

Добавлено через 2 часа 7 минут
Подсказали такой вариант:
SQL
1
2
3
SELECT kats.N,kats.kat, SUM(IIF(tasks.date2 IS NULL, 1, 0)) AS itog FROM tasks
LEFT JOIN kats ON kats.N=tasks.kat
GROUP BY kats.N,kats.kat
Вроде то, что нужно, по идее должно работать.
Но в моём случае вызвало ошибку: Syntax error in From clause.
Буду копать, экспериментировать.

Добавлено через 57 минут
Вот, подсказали, так заработало:
SQL
1
2
3
SELECT kats.N,kats.kat, SUM(IIF(tasks.date2 IS NULL, 1, 0)) AS itog FROM kats
LEFT JOIN tasks ON kats.N=tasks.kat
GROUP BY kats.N,kats.kat
Всем спасибо!

Добавлено через 27 минут
И в этом запросе оказался неприятный глюк:
если по какой-то категории в списке дел вообще нет ни одной строки, то запрос покажет количество: 1.
А должно быть ноль.
Как это можно исправить?

Добавлено через 3 минуты
О, придумал. У меня там есть ещё один признак: выполнено дело или нет. Получилось так:
SQL
1
2
3
SELECT kats.N,kats.kat, SUM(IIF(vip=FALSE, 1, 0)) AS itog FROM kats
LEFT JOIN tasks ON kats.N=tasks.kat
GROUP BY kats.N,kats.kat
Всем спасибо!

Добавлено через 2 часа 24 минуты
И этот вариант не всё выбрал.
Сейчас работает так:
SQL
1
2
3
4
5
SELECT kats.N,kats.kat,COUNT(tasks.N) AS itog
FROM kats
LEFT JOIN tasks ON ((kats.N=tasks.kat)
AND (tasks.date2 IS NULL))
GROUP BY kats.N, kats.kat