Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dodatkowa odpowiedź na podstawie wcześniejszego zapytania
Grandalf00
post 20.02.2018, 13:56:36
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 23.01.2016

Ostrzeżenie: (0%)
-----


W mam radiusie takie zapytanie:

  1. SELECT 0 AS id, '%{User-Name}' AS UserName, 'Mikrotik-Rate-Limit' AS Attribute,
  2. CONCAT(ROUND(COALESCE(x.upceil, y.upceil, z.upceil)),'k','/', ROUND(COALESCE(x.downceil, y.downceil, z.downceil)),'k') AS Value, '==' AS op
  3. FROM (SELECT n.id, MIN(n.name) AS name, SUM(t.downceil/o.cnt) AS downceil, SUM(t.upceil/o.cnt) AS upceil
  4. FROM nodeassignments na
  5. JOIN assignments a ON (na.assignmentid = a.id)
  6. JOIN tariffs t ON (a.tariffid = t.id)
  7. JOIN nodes n ON (na.nodeid = n.id)
  8. JOIN (SELECT assignmentid, COUNT(*) AS cnt
  9. FROM nodeassignments GROUP BY assignmentid) o ON (o.assignmentid = na.assignmentid)
  10. WHERE (a.datefrom <= unix_timestamp() OR a.datefrom = 0) AND (a.dateto > unix_timestamp() OR a.dateto = 0) AND n.name = '%{User-Name}'
  11. GROUP BY n.id
  12. ) x
  13. LEFT JOIN (SELECT
  14. SUM(t.downceil)/o.cnt AS downceil,
  15. SUM(t.upceil)/o.cnt AS upceil
  16. FROM assignments a
  17. JOIN tariffs t ON (a.tariffid = t.id)
  18. JOIN nodes n ON (a.customerid = n.ownerid)
  19. JOIN (SELECT COUNT(*) AS cnt, ownerid FROM nodes
  20. WHERE NOT EXISTS(SELECT 1 FROM nodeassignments, assignments a WHERE assignmentid = a.id AND nodeid = nodes.id AND (a.dateto > unix_timestamp() OR a.dateto = 0))
  21. GROUP BY ownerid) o ON (o.ownerid = n.ownerid)
  22. WHERE (a.datefrom <= unix_timestamp() OR a.datefrom = 0) AND (a.dateto > unix_timestamp() OR a.dateto = 0)
  23. AND NOT EXISTS (SELECT 1 FROM nodeassignments WHERE assignmentid = a.id) AND n.name = '%{User-Name}'
  24. GROUP BY n.id
  25. ) y ON (1=1)
  26. RIGHT JOIN (SELECT n.id, n.name, 20000 AS downceil, 2000 AS upceil
  27. FROM nodes n WHERE n.name = '%{User-Name}'
  28. ) z ON (1=1)
  29. UNION
  30. SELECT id, UserName, Attribute, Value, op
  31. FROM radreply
  32. WHERE Username = '%{User-Name}'
  33. ORDER BY id;


Zwraca mi ładnie:
UserName | Attribute | Value | op
user |Mikrotik-Rate-Limit |11111k/2222k | ==

Chciałbym dodać do tego jeszcze jedną linijkę

user |Cisco-Service-Info | QU;11111000;D;2222000 | ==

I tutaj mam pytanie: czy muszę duplikować i podać jeszcze raz powyższe zapytanie ze zmienionymi wartościami przy "AS" i w CONCAT czy da się to jakoś inaczej zrobić aby tak nie rozbudowywać finalnego zapytania?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.03.2024 - 04:14