mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: So 04.12.2016 09:31 Benutzername: Passwort: Auto-Login

Thema: ? mysql-query vom 22.11.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> ? mysql-query
Seite: 1, 2  Weiter
Autor Nachricht
gtz
Threadersteller

Dabei seit: 15.04.2002
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst Di 22.11.2005 13:58
Titel

? mysql-query

Antworten mit Zitat Zum Seitenanfang

gegeben ist folgende query aus einem shopsystem:

Code:

01: $query= "select
02:            item.AId as id,
03:            item.Txt as label,
04:            item.Nr as itemno,
05:            text.Text as text,
06:            itemprice.preis as price,
07:            manufacturer.Bez as manufacturer,
08:            manufacturer.id as manufacturer_id
09:            from ".$GLOBALS["config"]["db"]["tables"]["item"]." as item
10:            join ".$GLOBALS["config"]["db"]["tables"]["itemtext"]." as text on item.AID=text.AId
11:            join ".$GLOBALS["config"]["db"]["tables"]["itemprice"]." as itemprice on item.AID=itemprice.AId
12:            join ".$GLOBALS["config"]["db"]["tables"]["manufacturer"]." as manufacturer on item.FId=manufacturer.Id
13:            where item.LoeschKz!=1
14:            and item.WId='".$_SESSION["category"]."'
15:            and text.Nr='".$GLOBALS["config"]["language_id"]."'
16:            and itemprice.PNr='".$GLOBALS["config"]["items"]["active_price"] ."'
17:            order by ".$_SESSION["itemlist_orderby"]."
18:            limit ".$liststart.", ".$_SESSION["listlimit"];


die $GLOBALS["config"]["language_id"] bezeichnet die sprache, in welcher der artikeltext ausgelesen werden soll. blöd dabei ist, dass eventuell in der jeweiligen sprache garkein text vorliegt. in diesem fall sollte dem jeweiligen artikel der text in der standardsprache $GLOBALS["config"]["std_lang"] beigegeben werden.

ich bekomms nich auf die schnur. eben im chat hat karma ne query zusammengebastelt, die zwar möglicherweise funktioniert, aber nich praktikabel is, weil sie auf einemartikelstamm von ~10000 stück nu schon ne halbe stunde läuft.

hat jemand ne idee oder nen ansatz für mich?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 38
Geschlecht: Männlich
Verfasst Di 22.11.2005 18:04
Titel

Antworten mit Zitat Zum Seitenanfang

Wieviele Sprachen gibts denn?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
gtz
Threadersteller

Dabei seit: 15.04.2002
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst Di 22.11.2005 18:10
Titel

Antworten mit Zitat Zum Seitenanfang

beliebig aber fest viele.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Eistee
Administrator

Dabei seit: 31.10.2001
Ort: Grimma
Alter: 38
Geschlecht: Männlich
Verfasst Di 22.11.2005 18:16
Titel

Antworten mit Zitat Zum Seitenanfang

Wenn es den Text in der Sprache nicht gibt geht das Query gar nicht? Wenn dem nicht so ist, würde ich immer den Text in der gewählten Language selecten und den Standard-Text, und dann den als Fallback in [Scriptsprache deiner Wahl] verwenden.

Dürfte dank dem LIMIT im Query performanter sein als das Query weiter aufzubohren, und Artikeltexte sind ja meist auch keine 100 Seiten...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
gtz
Threadersteller

Dabei seit: 15.04.2002
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst Di 22.11.2005 18:19
Titel

Antworten mit Zitat Zum Seitenanfang

durch das join zwischen artikelstammsatz und text mit der bedingung der text-nr im where überlebt der betreffende artikel das join einfach nich.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht


Ort: -
Alter: -
Verfasst Di 22.11.2005 19:05
Titel

Antworten mit Zitat Zum Seitenanfang

nur zum basteln: kann ich ein stück von den tabellen haben zum rumprobieren?

Zuletzt bearbeitet von am Di 22.11.2005 19:05, insgesamt 1-mal bearbeitet
 
gtz
Threadersteller

Dabei seit: 15.04.2002
Ort: -
Alter: 41
Geschlecht: Männlich
Verfasst Di 22.11.2005 19:48
Titel

Antworten mit Zitat Zum Seitenanfang

XSchinkenX hat geschrieben:
nur zum basteln: kann ich ein stück von den tabellen haben zum rumprobieren?


wieviel hättste denn gerne?
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Account gelöscht


Ort: -
Alter: -
Verfasst Di 22.11.2005 20:21
Titel

Antworten mit Zitat Zum Seitenanfang

Juchu:
Code:

SELECT      txt.text "erg", pruef.text "pruefErg"
FROM         referenzen ref
LEFT JOIN   texte txt ON txt.refId = ref.id
LEFT JOIN   texte pruef ON pruef.langId = {$deineLangId} AND pruef.refId = {$deineRefId}
WHERE       ref.id = {$deineRefId}
AND           txt.langId = IF(
                                     pruef.text IS NOT NULL, {$deineLangId}, {$defaultLangId}
                                    )


manmanman... wohl ein wenig doppeltgemoppelt.

hier noch die dummytabellen, das kannste dir ja dann da rausklauben.

Code:
-- phpMyAdmin SQL Dump
-- version 2.6.4-pl1
-- http://www.phpmyadmin.net
--
-- Host: localhost
-- Erstellungszeit: 22. November 2005 um 20:26
-- Server Version: 4.1.14
-- PHP-Version: 5.0.5
--
-- Datenbank: `sprache_test`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `referenzen`
--

DROP TABLE IF EXISTS `referenzen`;
CREATE TABLE IF NOT EXISTS `referenzen` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(255) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Daten für Tabelle `referenzen`
--

INSERT INTO `referenzen` VALUES (1, 'name1');
INSERT INTO `referenzen` VALUES (2, 'keinTextDa');

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `texte`
--

DROP TABLE IF EXISTS `texte`;
CREATE TABLE IF NOT EXISTS `texte` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `text` varchar(255) NOT NULL default '',
  `refId` int(11) NOT NULL default '0',
  `langId` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

--
-- Daten für Tabelle `texte`
--

INSERT INTO `texte` VALUES (1, 'sprache_default', 1, 0);
INSERT INTO `texte` VALUES (2, 'sprache 1', 1, 1);
INSERT INTO `texte` VALUES (3, 'sprache2', 1, 2);


Zuletzt bearbeitet von am Di 22.11.2005 20:25, insgesamt 2-mal bearbeitet
 
 
Ähnliche Themen [MySql]Lost connection to MySQL server during query
mysql-Query gesucht
MySQL - Reg. Expressions im Query
[MySql]Problem mit Syntax in Query
[PHP]Problem mit MySQL-Query
[MySQL] SQL Query Frage
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.