Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
> Black out mit Join abfrage
zmedia
Geschrieben am: Mo 4.07.2005, 21:12
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 290
Mitglied seit: 29.04.2005


Hi Leute

Ich habe da ein Blackout, vielleicht kann mir wer weiterhelfen; folgendes:

Mit dieser Joinabfrage lese ich Daten aus der DB aus. Nun möchte ich zusätzlich der Abfrage folgenden Befehl mitgeben. Zeige die Daten mit der Sprache welche in der Var $sprache enthalten ist, falls keine übereistimmung gefunden wird zeige den Datensatz mit der default Spache (de) an.

CODE
$abfrage_box = mysql_query ("SELECT t0.content, t0.titel, t0.id_box, t0.id_seite, t0.id_partner, t0.update_time , t0.style, t0.type, t0.modul, t0.status, t0.sprache
FROM $tab_content_box t0
LEFT JOIN $tab_content_box t2 on t2.update_time <= '$datum_jetzt' && t2.id_seite = '$id1' && t0.id_partner = t2.id_partner and t0.update_time < t2.update_time
where t0.id_seite = '$id1' && t0.update_time <= '$datum_jetzt'  && t2.id_partner is NULL order by t0.id_partner asc ");


In dieser Joinabfrage sollte diese neue Bedingung einfliessen, nur habe ich zur Zeit einen klemmer. :-)

Thx René


--------------------
Top
PMEmail PosterUsers Website
Top
 
 
zmedia
#2 Geschrieben am: Di 5.07.2005, 21:01 (+23:49)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 290
Mitglied seit: 29.04.2005


Kann mir hier denn niemand weiter helfen?huh.gif

Gibt es eine Möglichkeit in einem Query eine if else schlaufe eizubauen?


--------------------
Top
PMEmail PosterUsers Website
Top
 
Alonso
WEPAX.com
#3 Geschrieben am: Di 5.07.2005, 21:54 (+00:53)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 514
Mitglied seit: 10.02.2005


Hmm, ein möglicher Lösungsansatz. Nicht sehr schön, aber müsste funktionieren

CODE
$abfrage_box = mysql_query("SELECT t0.content, t0.titel, t0.id_box, t0.id_seite, t0.id_partner, t0.update_time , "
                         ."t0.style, t0.type, t0.modul, t0.status, t0.sprache "
                         ."FROM $tab_content_box as t0 "
                         ."LEFT JOIN $tab_content_box t2 on t2.update_time <= '$datum_jetzt' "
                         ."&& t2.id_seite = '$id1' && t0.id_partner = t2.id_partner and t0.update_time < t2.update_time "
                         ."where t0.id_seite = '$id1' && t0.update_time <= '$datum_jetzt' && t2.id_partner is NULL "
                         ."&& t0.sprache = '$sprache' "
                         ."order by t0.id_partner asc);
       
// Prüfen ob Datensatz vorhanden
$num_rows = mysql_num_rows($abfrage_box);

if ($num_rows == 0) {  

   // Keine Datensätze -> Defaulwert
   $abfrage_box = mysql_query("SELECT t0.content, t0.titel, t0.id_box, t0.id_seite, t0.id_partner, t0.update_time , "
                         ."t0.style, t0.type, t0.modul, t0.status, t0.sprache "
                         ."FROM $tab_content_box as t0 "
                         ."LEFT JOIN $tab_content_box t2 on t2.update_time <= '$datum_jetzt' "
                         ."&& t2.id_seite = '$id1' && t0.id_partner = t2.id_partner and t0.update_time < t2.update_time "
                         ."where t0.id_seite = '$id1' && t0.update_time <= '$datum_jetzt' && t2.id_partner is NULL "
                         ."&& t0.sprache = 'de' "
                         ."order by t0.id_partner asc);
}


--------------------
Top
PMEmail PosterUsers WebsiteICQ
Top
 
zmedia
#4 Geschrieben am: Di 5.07.2005, 23:18 (+01:23)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 290
Mitglied seit: 29.04.2005


Hi Alonso

Danke für den Versuch, leider habe ich diese Möglichkeit auch schon verworfern.

So kann ich nur generell auwählen, wenn gar keine Sprache vorhanden ist zeige alle Datensätze mit Deutsch.

Ich möchte das ganze aber vermischen, zeige mir nur jeden einzelnen Datensatz in seiner Sprache oder in Deutsch.

Zudem war mein Ansporn, kein weiterer Query erstellen zu müssen.

Ich hoffe es einigermassen verständlich geschieben zu haben.


--------------------
Top
PMEmail PosterUsers Website
Top
 
Irene
irene.ch
#5 Geschrieben am: Mi 6.07.2005, 07:13 (+07:55)
Report PostQuote Post

AyomRank 7
Group Icon

Gruppe: Experten Entwicklung (Mod)
Beiträge: 1114
Mitglied seit: 3.05.2004


QUOTE (z-web @ Di 5.7.2005, 22:01)
Gibt es eine Möglichkeit in einem Query eine if else schlaufe eizubauen?

Kommt drauf an, ob MySQL eine Art IF-Anweisung unterstützt. In Access gibts dafür Iif, in Oracle und SQL Server gibts das Case Statement. Vereinfachtes Beispiel:

SELECT
case $sprache
when F then t0.content_f
when E then t0.content_e
when I then t0.content_i
else t0.content_d
end ,
t0.titel, t0.id_box, t0.id_seite, t0.id_partner, t0.update_time
FROM $tab_content_box t0


wobei die sprachifizierten Texte jeweils in Datenfeldern namens Content_Sprachabkürzung stehen.

Genauer kann ichs leider nicht, da ich weder MySQL noch PHP kenne.

Griessli
Irene


--------------------
Top
PMUsers Website
Top
 
Sascha Ahlers
#6 Geschrieben am: Mi 6.07.2005, 07:22 (+00:08)
Report PostQuote Post

AyomRank 8
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 1701
Mitglied seit: 27.12.2004


QUOTE (Irene @ Mi 6.7.2005, 7:13)
[...]
Kommt drauf an, ob MySQL eine Art IF-Anweisung unterstützt. In Access gibts dafür Iif, in Oracle und SQL Server gibts das Case Statement. Vereinfachtes Beispiel:
[...]


--------------------
Joseph Joubert: "Der Verstand kann uns sagen, was wir unterlassen sollen. - Aber das Herz kann uns sagen, was wir tun müssen."

Sicherheit beim Programmieren: Top 10 application vulnerabilities in 2007
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Alonso
WEPAX.com
#7 Geschrieben am: Mi 6.07.2005, 08:10 (+00:48)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 514
Mitglied seit: 10.02.2005


QUOTE (z-web @ Di 5.7.2005, 23:18)
Ich möchte das ganze aber vermischen, zeige mir nur jeden einzelnen Datensatz in seiner Sprache oder in Deutsch.

Zudem war mein Ansporn, kein weiterer Query erstellen zu müssen.

Verstehst du unter einem Datensatz eine einzelne Spalte/Feld? Falls ja, wird es relativ schwierig das gesuchte zu erreichen..


--------------------
Top
PMEmail PosterUsers WebsiteICQ
Top
 
zmedia
#8 Geschrieben am: Mi 6.07.2005, 12:55 (+04:44)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 290
Mitglied seit: 29.04.2005


Ja, genau Alonso das meine ich.

Jede Zeile ist ein neuer Datensatz. Ne Knacknuss was.

Danke auch Irene und Sasche für Eure Wertvollen Tips!

Da muss ich mich mal durchlesen und studieren.


--------------------
Top
PMEmail PosterUsers Website
Top
 
zmedia
#9 Geschrieben am: Do 7.07.2005, 13:34 (+24:38)
Report PostQuote Post

AyomRank 5
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 290
Mitglied seit: 29.04.2005


Fazit:

Ich glaube mein Problem kann ich so nicht lösen, werde wohl oder über das ganze mit mehreren Querys machen müssen.

Die ganze Geschichte mit If oder CASE wird, nach meinen Test immer vor der When prozedur einfliessen; darum ist das Ergebnis das selbe wie bei der Lösung von Alonso. Leider wird auch nur entweder oder auf die ganze Abfrage bezogen und nicht auf einzelne Zeilen herunter gebrochen.

Tja, war ein Versuch eine komplexe Abfrage in eine Query zu packen. Nun mache ich es wie gewohnt!

Danke dennoch für Eure Tipps.

Gruss René


--------------------
Top
PMEmail PosterUsers Website
Top
 
Alonso
WEPAX.com
#10 Geschrieben am: Do 7.07.2005, 13:51 (+00:17)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 514
Mitglied seit: 10.02.2005


Eben, und alles was du im When änderst, wirkt sich (glücklicherweise) immer auf den kompletzten Datensatz aus. Was du noch versuchen könntest, wäre etwas mit der Funktion "IFNULL" zu erreichen. Ist eine Spalte Leer (NULL), kannst du dies so detektieren und einen defaultwert setzen.

Edit:
Habe gerade ein bisschen zum Thema rumgegoogelt, und bin dabei auf das da gestossen. Könnte dir ev. weiterhelfen..


--------------------
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/7689

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
SQL Abfrage für OS Commerce Siegfried_D 124 5 Do 13.11.2008, 22:58
MySQL Abfrage von einer Tabelle webdoktor 476 19 Sa 9.08.2008, 17:45
MySQL Abfrage von zwei Tabellen webdoktor 275 6 Do 31.07.2008, 15:26
MySQL-Abfrage optimieren Logigoo 472 6 Do 26.06.2008, 12:41
MySQL-Abfrage geht nicht? pl_90 532 18 Mo 26.05.2008, 13:37
MSSQL Abfrage Webi 448 5 Mi 7.05.2008, 22:38
Access Abfrage Auto Increment Big Rob 262 2 Mi 12.03.2008, 16:41
MySQL-Abfrage: Mit oder ohne "JOIN" cr4m0 238 6 Mo 10.03.2008, 16:16
SQL Abfrage milkboy 177 4 So 6.01.2008, 13:58




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]