SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > MySQLi/PDO/(MySQL)

MySQLi/PDO/(MySQL) Anfänger, Fortgeschrittene oder Experten können hier Fragen und Probleme rund um MySQLi/PDO/(MySQL) diskutieren

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 20.04.2010, 14:48:28
Sandra Sandra ist offline
Anfänger
 
Registriert seit: May 2006
Beiträge: 109
LEFT JOIN oder subquery oder min gibt keine Lösung

Hallo,

ich habe immer noch ein Problem in der SELECT- Abfrage.
Die Tabellen sind:

tb_differenz1

differenz1
id_projekt

tb_differenz2

differenz2
id_person

Die Spalten differenz1 und differenz2 sind gleich, aber die id_projekt und id_person kommen mehrmals vor, also ungefähr so

tb_differenz1

345
12

654
11

745
12

tb_differenz2

345
7

654
7

745
8


Benötigt wird die MIN(differenz1) gruppiert nach der id_projekt und gleichzeitig darf die id_person nur einmal genutzt werden, also HAVING COUNT(id_person)=1

Versucht habe ich es mit :
subquery--gibt nur einen Wert zurück
LEFT JOIN--gibt die falschen Werte für id_person aus
HAVING COUNT--gibt kein Ergebnis

Hier das SELECT-Statement:

SELECT MIN(differenz1) , id_projekt FROM differenz1 LEFT JOIN differenz2 WHERE differenz1=differenz2 GROUP BY id_projekt HAVING COUNT(id_person)=1

Hat Jemand eine Idee?

DANKE

Sandra
Mit Zitat antworten
  #2  
Alt 20.04.2010, 16:06:15
Ckaos Ckaos ist offline
Member
 
Registriert seit: Nov 2007
Beiträge: 843
AW: LEFT JOIN oder subquery oder min gibt keine Lösung

Hi

nachdem ich lange auf Antwort gewartet habe ;)
gehts immernoch um altes Thema ?

mfg

Ckaos
__________________
"Wenn die Leute Häuser so bauen würden, wie wir Programme schreiben, würde der erstbeste Specht unsere Zivilisation zerhacken."
In den allermeisten Fällen sitzt der Bug etwa 40 cm vor dem Monitor!
Mit Zitat antworten
  #3  
Alt 21.04.2010, 12:52:38
Sandra Sandra ist offline
Anfänger
 
Registriert seit: May 2006
Beiträge: 109
AW: LEFT JOIN oder subquery oder min gibt keine Lösung

Hi,

ja es ist wieder das gleiche Theme, nur werden jetzt die Daten in zwei Tabellen geschrieben.

Mit Arrays bilden und Minimum mit php herausholen, kommt immer nur ein Datensatz.

Wie es jetzt ist kommt zumindest die richtige id_person herraus, was vorher mit nur einer TB nicht möglich war.

PHP-Code:
//Übergabe einer Variablen
$p=$_POST['p'];

//erst lösche ich alle bisherigen Einträge
DELETE FROM differenz1 WHERE p=$p
DELETE FROM differenz2 WHERE p
=$p

//Daten zusammenstellen von 2 anderen Tabellen

SELECT number_projektid_projektnumber_person,id_person FROM tb_projekttb_person WHERE p=$p ORDER BY number_projekt

while ($zeile mysql_fetch_object($result)) {  
               
$id_projekt3$zeile->id_projekt;
              
$id_person3 $zeile->id_person;  
              
$number_projekt $zeile->number_person;
              
$number_person $zeile->number_person;

//Ermitteln der Differenzen ung ggf Vorzeichen ändern

$diff=($number_projekt-$number_person)
if(
$diff<0)
               {
               
$diff2=$diff*(-1);
               }
               else
               {
               
$diff2=$diff;
               }

//Die Daten werden in die Tabellen differnz1 und differenz2 geschrieben

INSERT INTO differenz1 (diff2,p,id_projekt4VALUES('%s','%s','%s')",$diff2,$p,$id_projekt3

INSERT INTO differenz2 (diff4,p,id_person4) VALUES('%s','%s','%s')"
,$diff2,$p,$id_person3

//Min aus tb differenz1 ziehen

SELECT MIN(diff2) As differenceid_projekt4 FROM differen1  WHERE p=$p GROUP BY id_projekt4

//Und das richtige Team dazu aus der tb differenz2 holen

SELECT id_person4 ,diff4diff2 FROM differenz1differenz2 WHERE  p=$p AND diff4=diff2 

//Zum Schluß schreibe ich die id_person4 wieder in die Ausgangstabelle 
Das gewünschte Ergebnis wäre

id_projekt ,id_person
1-2
2-5
3-7


Falls die Differenz aber bei verschiedenen id_projekt am kleinsten ist zu gleichen id_person gibt es ein nicht erwünschtes Ergebnis

id_projekt ,id_person
1-2
2-2
3-7

Das ganze ist so wie es jetzt ist natürlich sehr umständlich mit den ganzen DELETE und SELECT und noch ein SELECT Statement und das Einzige was mir noch einfällt ist, die Anzahl der jeweiligen id_person per COUNT zu erhalten, die doppelte Reihe zu löschen und alles nochmal zu durchlaufen.

Es gibt aber bestimmt eine viel bessere Lösung?
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
LEFT JOIN oder INNER JOIN ? hessie2000 MySQLi/PDO/(MySQL) 0 20.03.2010 14:13:32
3 Tabellen Left Outer Join kevmaster MySQLi/PDO/(MySQL) 1 28.07.2007 15:59:53
Left Outer Join mit 2 Werten parkwaechter MySQLi/PDO/(MySQL) 3 12.06.2007 11:21:08
4 Tabellen verknüpfen - INNER, OUTER und LEFT Join Franzx MySQLi/PDO/(MySQL) 0 13.11.2006 11:10:51
IExplorer <-> Firefox + CSS rsciw HTML, CSS und JavaScript Help! 10 25.09.2006 17:06:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:15:43 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt