MYSQL Sortierung mit subquery

Cusco

Erfahrenes Mitglied
Hi,

Ich habe 2 Tabellen, die eine enthält die ID (urlcode) und den dazu gehörige Text (URL), die 2. Tabelle enthält nur DATE und die ID-Nummer. Nun soll die 2. Tabelle die ID-Nummer so sortieren wie in der 1, Tabelle der Text nach asc sortiert wird.

Code:
... `urlcode` from `$dbtabelle` group by `urlcode` order by (select `urlcode` from `$dbtabelle_url_prefs` order by `url` asc)  asc limit $eintrag,50

Nur das ganze Fuktioniert nicht, ich weis auch nicht wie ich die Felder `urlcode` der beiden Tabellen verbinden soll.
 
Hi,

kannst Du mal angeben, was Du genau in Deinem Ergebnis haben möchtest (so als Beispiel)? Hört sich etwas konfus an. Du möchtest vermutlich die beiden Tabellen joinen.

LG
 
Hi,

kannst Du mal angeben, was Du genau in Deinem Ergebnis haben möchtest (so als Beispiel)? Hört sich etwas konfus an. Du möchtest vermutlich die beiden Tabellen joinen.

LG

Das ist die genaue Struktur
CREATE TABLE `counter_urlprefs` (
`startdatum` timestamp NOT NULL default CURRENT_TIMESTAMP,
`urlcode` smallint(5) NOT NULL,
`url` varchar(300) NOT NULL,
PRIMARY KEY (`urlcode`)
) ENGINE=MyISAM DEFAULT CHARSET=ascii;

CREATE TABLE `counter_verwaltung` (
`datum` date NOT NULL,
`erstezeit` time NOT NULL,
`letztezeit` time NOT NULL,
`counter` smallint(5) NOT NULL,
`urlcode` smallint(5) unsigned NOT NULL,
PRIMARY KEY (`datum`,`urlcode`)
) ENGINE=MyISAM DEFAULT CHARSET=ascii;

Ich versuche es:
Prefs-Tabelle
urlcode,url
1, /c
2, /a
3, /d

Tabelle 2;
z.B.
Date, urlcode
2009-02-26, 1
2009-02-26, 2
2009-02-26, 3

Welche dann nach
Date, urlcode
2009-02-26, 2 (/a)
2009-02-26, 1 (/c)
2009-02-26, 3 (/d)
Sortiert werden sollte

Der urlcode wird vorher Gruppiert, weshalb ich nicht noch Datumangaben mache.
 
Hi,

Welche dann nach
Date, urlcode
2009-02-26, 2 (/a)
2009-02-26, 1 (/c)
2009-02-26, 3 (/d)
Sortiert werden sollte

Der urlcode wird vorher Gruppiert, weshalb ich nicht noch Datumangaben mache.

Willst Du dann das neueste Datum haben, oder was meinst Du damit?

Vielleicht hilft Dir das schon?

Code:
SELECT a.urlcode, MAX(datum), url 
   FROM counter_verwaltung a 
   INNER JOIN counter_urlprefs b 
      ON a.urlcode = b.urlcode 
   GROUP BY urlcode 
   ORDER BY url ASC

LG
 
Hi,



Willst Du dann das neueste Datum haben, oder was meinst Du damit?

Vielleicht hilft Dir das schon?

Code:
SELECT a.urlcode, MAX(datum), url 
   FROM counter_verwaltung a 
   INNER JOIN counter_urlprefs b 
      ON a.urlcode = b.urlcode 
   GROUP BY urlcode 
   ORDER BY url ASC

LG

Wenn das Funktioniert wäre das auch gleich die Lösung für einer meiner anderen Probleme :)

Nur leider kommt ein MYSQL Fehler, hier der Komplette Query
Code:
"select count(*) as `anzahl`, sum(`counter`) as `zcounter`, avg(`counter`) as `avgcounter`, max(`counter`) as `maxcounter`, min(`datum`) as `mindatum`, max(concat(cast(`datum` as char),cast(' ' as char),cast(`letztezeit` as char))) as `maxdatum`, a.urlcode, `url` (FROM `$dbtabelle` a INNER JOIN `$dbtabelle_url_prefs` b ON a.urlcode = b.urlcode) from `$dbtabelle` group by `url` order by $sort limit $eintrag,55"

Und das ist die Fehlermeldung:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `counter_verwaltung` a INNER JOIN `counter_urlprefs` b ON a.urlcode = b.url' at line 1
 
Hi,

Code:
SELECT `feld1`, ...,  `feldn` (FROM `tabelle` ...)

würde ich auch nicht verstehen. ;)

Soll das schon wieder eine Subquery werden? Wozu?
Und das nächste Mal wäre ich Dir dankbar, wenn Du so eine lange Abfrage in leserlicher Form postest und nicht in eine Zeile geklatscht.

LG
 
Hi,

Code:
SELECT `feld1`, ...,  `feldn` (FROM `tabelle` ...)

würde ich auch nicht verstehen. ;)

Soll das schon wieder eine Subquery werden? Wozu?
Und das nächste Mal wäre ich Dir dankbar, wenn Du so eine lange Abfrage in leserlicher Form postest und nicht in eine Zeile geklatscht.

LG

Ich habe es jetzt hinbekommen danke, deine letzte Frage hat als Antwort genügt :)
 
Zurück