probleem sorteren veld 1 altijd bovenaan
ik heb twee velden in een tabel prijs
veld 1 = prijs
veld 2 = opties
nu wil ik sorteren oplopend en aflopend op de prijs en op opties waarbij de prijs altijd bovenaan komt te staan.
vb
SELECT * FROM `prijs` ORDER BY `prijs` desc , opties desc
output
1000,00
99,00
1,1
jan
ed
ad
dit is goed
vb2
SELECT * FROM `prijs` ORDER BY `prijs` asc, opties asc
output
ad
ed
jan
1,1
99,00
1000,00
dit is fout. Ik wil eerst altijd de prijs bovenaan hebben maar wel op deze mannier gesorteerd
dus
1,1
99,00
1000,00
ad
ed
jan
is er een optie om het veld prijs altijd als eerste bovenaan de sortering te krijgen of moet ik dit met twee queries doen.
Gr Creator
Gewijzigd op 01/01/1970 01:00:00 door Creator90
Of andersom.
Maar moet gewoon kunnen
Prijs | Opties
1,1 | ad
99,00 | ed
1000,00 | jan
Zijn er meer met eenzelfde prijs dan krijg je het zo:
Prijs | Opties
1,1 | ad
1,1 |bd
99,00 | ed
1000,00 | jan
en je haalt uiteraard de backticks weg, voor je eigen gezondheid
prijs | opties
1,1 | leeg
1000,00 | leeg
99,00 | leeg
leeg | ed
leeg | ad
leeg | jan
leeg bedoel ik staat niets in
vandaar dat het onder elkaar gesorteerd word
met desc asc switchen maakt niet veel uit . Het probleem blijft bestaan
Gewijzigd op 01/01/1970 01:00:00 door creator90
Wil je het uiteidelijke doel hiervan met ons delen? :)
Jacco schreef op 24.09.2007 11:13:
Jij hebt een vaag DB ontwerp vermoed ik :P
Wil je het uiteidelijke doel hiervan met ons delen? :)
Wil je het uiteidelijke doel hiervan met ons delen? :)
Ik ga met Jacco mee, zeer waarschijnlijk klopt je datamodel van geen kant. Ga dat eerst regelen en dan is (bijna) alles mogelijk met SQL
ik heb een input veld waar je een prijs in kan invullen
ook wordt dit veld gebruikt om eventueel een optie op te geven
bv n.v.t, ruilen
nu wil ik als ik op prijs sorteer dat eerst altijd de prijs oplopend of aflopend weergegeven word en hieronder de opties
als het niet duidelijk is ga een naar marktplaats en sorteer op prijs als voorbeeld
het bovenstaande is een voorbeeld ik zoek alleen de beste oplossing alles is nog te wijzigen
Gewijzigd op 01/01/1970 01:00:00 door creator90
Raad je aan om de opties in een apart tabel te zetten en aan het item te koppelen met het id btw
Dan kun je je opties makkelijker dynamisch ophalen en later ook makelijker (laten) beheren
Wat voor type heeft rpijs bij jou? VARCHAR Denk ik? Dan kan je er sowieso niet goed op sorteten want dan krijg je die
1
10
100
2
21
215545848
3
enz..
Klaasjan Boven schreef op 24.09.2007 11:23:
Inderdaad de opties bijv ruilen wordt een aparte kolom. Je kan met php wel checken of er letters of cijfers zijn in gevuld. Afhankelijk daarvan zoek je in de ene dan wel in de andere kolom.
Wat voor type heeft rpijs bij jou? VARCHAR Denk ik? Dan kan je er sowieso niet goed op sorteten want dan krijg je die
1
10
100
2
21
215545848
3
enz..
Wat voor type heeft rpijs bij jou? VARCHAR Denk ik? Dan kan je er sowieso niet goed op sorteten want dan krijg je die
1
10
100
2
21
215545848
3
enz..
prijs is een decimal (11,2)
opties is een varchar (20)
Als eigen systeem is :
DB ontwerp nakijken voor dat je ook maar iets aanraakt
Als je hem gekregen hebt :
Ik heb nu al medelijden met je want je gaat het nog enorm moeilijk krijgen denk ik.
Klaasjan Boven schreef op 24.09.2007 11:23:
Wat voor type heeft rpijs bij jou? VARCHAR Denk ik? Dan kan je er sowieso niet goed op sorteten want dan krijg je die
1
10
100
2
21
215545848
3
enz..
1
10
100
2
21
215545848
3
enz..
En als je had gekeken naar de topicstart (het 1e bericht) dan zag je:
1,1
99,99
1000,00
als volgorde aangegeven, waarom denk je dat het dan een varchar is?
Jacco schreef op 24.09.2007 11:49:
Volledig eigen systeem of een DB door je strot gedrukt gekregen?
Als eigen systeem is :
DB ontwerp nakijken voor dat je ook maar iets aanraakt
Als je hem gekregen hebt :
Ik heb nu al medelijden met je want je gaat het nog enorm moeilijk krijgen denk ik.
Als eigen systeem is :
DB ontwerp nakijken voor dat je ook maar iets aanraakt
Als je hem gekregen hebt :
Ik heb nu al medelijden met je want je gaat het nog enorm moeilijk krijgen denk ik.
het is een volledig eigen systeem met eigen database. Kan dus alles zelf aanpassen
Gewijzigd op 01/01/1970 01:00:00 door creator90
En heb je toevallig een (excel) datamodel :)?
Zoja kun je me dan ff een link pmen (verveel me en als het niet te veel werk is zal ik eens kijken of ik er wat van kan maken :))
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES 'latin1' */;
CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `test`;
CREATE TABLE `prijs` (
`Id` int(11) NOT NULL auto_increment,
`prijs` decimal(11,2) default NULL,
`prijs_v` varchar(20) default NULL,
PRIMARY KEY (`Id`)
) ENGINE=MyISAM AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
INSERT INTO `prijs` VALUES (1,5400.77,NULL);
INSERT INTO `prijs` VALUES (2,0.12,NULL);
INSERT INTO `prijs` VALUES (3,100,NULL);
INSERT INTO `prijs` VALUES (4,1200,NULL);
INSERT INTO `prijs` VALUES (5,NULL,'pereserveerd');
INSERT INTO `prijs` VALUES (6,934,NULL);
INSERT INTO `prijs` VALUES (7,NULL,'n.v.t.');
INSERT INTO `prijs` VALUES (8,NULL,'h.u.j');
INSERT INTO `prijs` VALUES (9,200,NULL);
INSERT INTO `prijs` VALUES (10,NULL,'h.a.s');
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
ikzelf test een querie met phpmyadmin
hier heb je er twee
SELECT *
FROM `prijs`
ORDER BY `prijs` ASC , prijs_v ASC
waardoor de prijs_v bovenaan komt moet dus omgedraait zijn
SELECT *
FROM `prijs`
ORDER BY `prijs` DESC , prijs_v ASC
geeft de prijs tabel bovenaan
Gr Creator
Gewijzigd op 01/01/1970 01:00:00 door creator90
Ik raad je aan het volgende te doen
Items
item_id <- primary
prijs
Opties
optie_id <- primary
optie_naam
optie_item
optie_id <- primary
item_id <- primary
Iets van deze strekking. Ziet er nu omslachtig uit. Maar ga je later plezier van hebben :)
Gewijzigd op 01/01/1970 01:00:00 door Jacco Engel
Ook zoeken naar een item met bijvoorbeeld optie "i" wordt heel erg vergemakkelijkt!