PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Abfrage vergleichen mit csv File (http://www.selfphp.de/forum/showthread.php?t=25654)

ulab 21.11.2015 00:14:09

Abfrage vergleichen mit csv File
 
Hallo,

möchte in einer Abfrage eine Spalte mit einer anderen csv Datei vergleichen und bei Gleichstand den Text davon rechts, ausgeben.

Info: In der betreffenden Spalte (Master-Tabelle) befindet sich eine Zahl, gleiche taucht in der externen csv Datei als ID auf. Ausserdem befindet sich in dieser ID Zelle bzw. rechts daneben befindliche Spalte, der Text, um den es geht.

Gruss ulab

vt1816 21.11.2015 22:31:27

AW: Abfrage vergleichen mit csv File
 
Hallo und willkommen hier im Forum.

Vielen Dank für den kurzen Auszug aus Deinen Hausaufgaben. Wie können/sollen wir dabei helfen?

ulab 22.11.2015 13:09:24

AW: Abfrage vergleichen mit csv File
 
Hallo und vielen Dank für die nette persönliche Begrüßung.

Ich hoffe das mein Anliegen einigermaßen verstanden wurde, nicht ganz einfach dies Erklärend / Fragend zu umschreiben. Helfen könnt Ihr mir mit Lösungsansätze bis Code Schnipsel oder so?

Habe es selbst mit "LOAD DATA LOCAL INFILE andere.csv" versucht! Weiter komme ich nicht, bin mir auch nicht sicher, ob dies der richtige Ansatz ist.

vt1816 23.11.2015 15:56:21

AW: Abfrage vergleichen mit csv File
 
Wie immer gibt es auch für dieses/Dein Problem bestimmt mehrere Wege.


Dein Ansatz klingt bei den spärlichen Infiormationen als ein möglicher Weg:
  • Importiere die csv-Datei
  • erzeuge einen Index auf der importierten Tabelle (wegen schnellerer Suche im Feld mit der ID)
  • durchlaufe die Datensätze Deiner Mastertabelle und suche mit der eindeutigen ID in der importierten Tabelle (Stichwort SCHLEIFE)
  • bei einem Treffer gib den gewünschen Text aus dem "Neben-"Feld aus

Wenn es jetzt noch Probleme geben sollte, komm mit DEINEM Code und entsprechenden aussagekräftigen Beispielen aus beiden Tabellen wieder hierher zurück.

sysop 23.11.2015 16:04:45

AW: Abfrage vergleichen mit csv File
 
LOAD DATA LOCAL INFILE dient zum Importieren einer CSV-Datei in eine Datenbank.

2 Wege:

1.
Du liest alle Werte aus der Tabelle, die du prüfen möchtest und untersuchts die CSV-Datei dahingehend, ob die Werte in der CSV vorkommen (das kann aber recht viel werden).

2.
Mit http://us1.php.net/manual/de/function.fgetcsv.php liest du die CSV-Datei Zeilenweise ein, nimmst den Wert, den du prüpfen möchtest und erstellst eine Abfrage auf diesen Wert. Ist er vorhanden, dann ausgeben, sonst die nächste Zeile deineer CSV. Dem Link folgend könnte das so aussehen:

PHP-Code:

// Vergelichsfeld ist nummer 4 in der CSV-Datei
$field_to_check 3;

if ((
$handle fopen("test.csv""r")) !== FALSE
{
    while ((
$data fgetcsv($handle1000",")) !== FALSE
    {
        
// SQL Abfrage erstellen wo mit Feld 4 verglichen wird.
        
$SQL 'SELECT `bla`, `foo` FROM `tabelle` WHERE `bla` = \''.$data[$field_to_check].'\'';
        
// hier dann die Abfrage an deine Datenbank schicken und das Ergebnis in $result einlesen, wenn $result vorhanden, dann foo ausgeben

    
}
}
fclose($handle); 


ulab 26.11.2015 09:14:27

AW: Abfrage vergleichen mit csv File
 
Hallo, Danke für die Antworten und Ok ich versuche es etwas besser zu umschreiben.
  1. Das ganze soll per SQL-Abfrage in einem SQL-Editor stattfinden, glaube das php dort nicht möglich ist.

  2. In der db 'master' sind einige Spalten wie zum Beispiel die Spalte 'was', diese Spalte hat Zahlen inne wie 1, 99, 88 usw.

  3. Nun kommt das csv-file 'zusatz' ins Spiel, in diesen File hat es zwei Spalten. Die 'was_id' und 'was_txt'. In der 'wo_id' befinden sich wiederum die Zahlen 1, 99, 88 usw. .'wo_txt' hat den Text dazu, den es gilt darzustellen zu finden...

vt1816 26.11.2015 10:13:56

AW: Abfrage vergleichen mit csv File
 
Auch nur bei Nutzung eines SQL-Editors sollte es so wie oben beschrieben laufen. Lass einfach den PHP-Teil weg.


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:10:48 Uhr.

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