ORDER BY sur champ sérialisé

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : ORDER BY sur champ sérialisé

Re: ORDER BY sur champ sérialisé

par Elie » 15 févr. 2017, 17:41

Ouais seule solution faire le tri après en mettant comme clé de chaque entrée la valeur que l'on veut trier.
Tant pis, je pensais ca possible.

Re: ORDER BY sur champ sérialisé

par moogli » 15 févr. 2017, 17:38

salut,

comme ça c'est pas possible, peux être avec une fonction utilisateur que tu utiliseras pour le order by (je ne sais pas si cela fonctionne).

globalement quand on met des données structurées dans une base de données c'est qu'il y a un problème.

si tu as besoin de traduction il faut une table pour cela (et nom un champ par langue).
exemple
create table language(
id_language int not null primary key,
name varchar(50) not null,
name_in_language varchar(50) not null -- je sais pas trop comment le nommer c'estle nom de la langue dans la langue english pour l'anglais etc
);
create table traduction {
id_traduction int not null primary key,
id_language int not null, -- clef étrangère vers la table language
id_text int not null, -- clef étrangère vers la table pour laquelle on a les données traduite
translated_text varchar(200) not null
);
@+

ORDER BY sur champ sérialisé

par Elie » 15 févr. 2017, 17:20

Hello,

Je stock dans un champ une valeur serializé en plusieurs langue.

Exemple :

Titre = 'a:2:{s:2:"fr";s:4:"UEFA";s:2:"en";s:4:"FAUE";}'

Je voudrais en fonction de la langue faire un ORDER BY `titre` ASC

Mais forcement il va prendre a:2 comme ordre.
Je voudrais que pour la langue FR prendre 'UE' et pour la langue EN : 'FA';

Comment faire sans creer un champ par langue ?

Merci